我刚开始学斯威夫特,我有个问题。我有两个视图控制器,我正在尝试将一个字符串从视图1发送到视图2。
到目前为止,这就是我所得到的:
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“,则会得到一个致命错误,”在展开可选值时意外地发现为零“。
如果你有什么想法请告诉我。
谢谢
发布于 2016-11-18 15:43:52
在segue之前,您的出口为零(因为未加载视图)。
在DestViewController中,您应该创建一个变量来存储文本:
class ViewController2{
@IBOutlet weak var your_label: UILabel!
var label_tex=String()
}在prepareForSegue中启动它:
override func prepare(for segue: UIStoryboardSegue, sender: Any?){
if segue.identifier =="1"{
let DestViewControl=segue.destination as! ViewController2
DestViewController.label_tex="9"
}
}最后,在ViewController2中,在加载视图时更改标签文本(并且您的出口不再为零):
override func viewWillAppear(_ animated: Bool){
your_label.text=label_tex
}发布于 2016-11-18 15:42:21
lb_ExLabem在您的DestViewController中,当您试图像这样设置它时
DestViewController.lb_ExLabem.text = "test"值为nil。(由于视图已大量加载)
尝试在lb_ExLabem的viewWillAppear() of DestViewController中设置DestViewController的值,这样就可以了
发布于 2016-11-18 15:41:26
这个错误仅仅意味着您的DestViewController.lb_ExLabem变量的值是nil。确保变量中有一个值,这样就不会出现错误。
https://stackoverflow.com/questions/40680924
复制相似问题