首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xcode 8-意外发现零

Xcode 8-意外发现零
EN

Stack Overflow用户
提问于 2016-11-18 15:38:59
回答 3查看 227关注 0票数 0

我刚开始学斯威夫特,我有个问题。我有两个视图控制器,我正在尝试将一个字符串从视图1发送到视图2。

到目前为止,这就是我所得到的:

代码语言:javascript
复制
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
{
if segue.identifier =="1"
{
let DestViewControl = segue.destination as! ViewController2
DestViewController.count = 9
}
}

在视图2中,计数是一个变量。到目前为止,这是很好的工作。但是,如果我想自动更改视图2中标签中的文本,如DestViewController.lb_ExLabem.text = "test“,则会得到一个致命错误,”在展开可选值时意外地发现为零“。

如果你有什么想法请告诉我。

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-11-18 15:43:52

在segue之前,您的出口为零(因为未加载视图)。

在DestViewController中,您应该创建一个变量来存储文本:

代码语言:javascript
复制
class ViewController2{
    @IBOutlet weak var your_label: UILabel!
    var label_tex=String()
}

在prepareForSegue中启动它:

代码语言:javascript
复制
override func prepare(for segue: UIStoryboardSegue, sender: Any?){
    if segue.identifier =="1"{
        let DestViewControl=segue.destination as! ViewController2
        DestViewController.label_tex="9"
    }
}

最后,在ViewController2中,在加载视图时更改标签文本(并且您的出口不再为零):

代码语言:javascript
复制
override func viewWillAppear(_ animated: Bool){
    your_label.text=label_tex
}
票数 1
EN

Stack Overflow用户

发布于 2016-11-18 15:42:21

lb_ExLabem在您的DestViewController中,当您试图像这样设置它时

代码语言:javascript
复制
 DestViewController.lb_ExLabem.text = "test"

值为nil。(由于视图已大量加载)

尝试在lb_ExLabemviewWillAppear() of DestViewController中设置DestViewController的值,这样就可以了

票数 1
EN

Stack Overflow用户

发布于 2016-11-18 15:41:26

这个错误仅仅意味着您的DestViewController.lb_ExLabem变量的值是nil。确保变量中有一个值,这样就不会出现错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40680924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档