2017-01-03 39 views
0

当使用prepare(forSegue)方法将数据传递给segue的目标视图控制器时,目标VC的所有成员都是零。因此,我的程序在尝试访问这些成员时崩溃。Swift 3:在segue的目标视图控制器中只有nil值

我在源视图控制器代码:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 

    if segue.identifier == "Second2DetailEdit"{ 
     var detailVC = segue.destination as! DrinkDetailViewController 
     detailVC.headerLabel.text = "Edit Drink" 

    } 
    //... 
} 

的VC本身不是nil。只有VC的所有成员。我忘了什么吗? 这只发生在我的新Swift 3项目中。我的Swift 2项目中的类似代码没有问题。 在此先感谢。

回答

1

目标视图控制器的视图尚未创建,这就是为什么所有IBOutlet都是零。尝试在目标的字符串和ViewDidLoad等普通属性中发送所需的信息,更新您的视图。

0

我建议安全展开你的detailVC而非武力展开......

if segue.identifier == "Second2DetailEdit" { 
    if let detailVC = segue.destination as? DrinkDetailViewController { 
     detailVC.headerLabel.text = "Edit Drink" 
    } 
} 

你可以更轻松地在destinationVC设置属性,并传递信息到这些,而不是试图通过UILabel做小号...

1

解决这个问题的最好办法就是创造你的第二个视图控制器的变量并设置文本到代替。

然后,一旦VC已初始化,您可以将headerLabel.text设置为新的变量viewDidLoad

相关问题