我遇到的問題是瞭解當我調用prepare(forSegue:)
方法時發生了什麼。我得到的數據通過從MainVeiwController
到SecondViewController
的機制。特別是在傳遞價值時,我無法從MainViewController
初始化SecondViewController
的@IBOUTLET,但我可以初始化其他可選屬性,如SecondViewController
的var name:String?
。只是有點好奇。Prepare的生命週期(forSegue:....)
進一步闡述的問題:
爲主要類別查看:
class MainViewController:UIViewController{
..
..
..
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let yourVC = segue.destinationViewController as? SecondViewController {
// this doesn't throw any error
yourVC.someData = self.someData
// this throws an error
yourVC.textLabel.text = self.someData
}
}
}
類爲第二個視圖:
class SecondViewController:UIViewController{
@IBOULET weak var textLabel:UILabel!
var someData:String?
..
..
..
}
請您澄清一下你的問題是解釋你認爲不應該發生的事情,或者你認爲應該發揮作用的不正常工作? – dasblinkenlight
你試圖分配給插座的價值是什麼? –
您無法訪問IBOutlets,因爲視圖尚未加載。嘗試在'prepareForSegue'目標視圖控制器上調用'loadViewIfNeeded',然後訪問IBOutlets – Paulw11