我刚开始学习 Swift,我有一个问题。
我有两个 View Controller ,我正在尝试将一个字符串从 View 1 发送到 View 2。
这是我到目前为止所得到的:
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
{
if segue.identifier =="1"
{
let DestViewControl = segue.destination as! ViewController2
DestViewController.count = 9
}
}
Count 是 View 2 中的一个变量。到目前为止效果很好。
但是,如果我想自动更改 View 2 中标签中的文本,如 DestViewController.lb_ExLabem.text = "test",我会收到 fatal error “在展开可选值时意外发现 nil”。
如果您有任何想法,请告诉我。
谢谢
在 segue 之前,outlet 为 nil(因为未加载 View )。
在 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 中,在加载 View 时更改标签文本(并且您的 socket 不再为 nil):
override func viewWillAppear(_ animated: Bool){
your_label.text=label_tex
}