2017-01-03 16 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

相關問題