好吧,我有視圖控制器 A,它像這樣呈現視圖控制器 B...
@IBAction func presentView(_ sender: Any) {
let storyBoard : UIStoryboard = UIStoryboard(name: "main", bundle:nil)
let vc = storyBoard.instantiateViewController(withIdentifier: "Popout") as! PopoutWindow
vc.modalTransitionStyle = .coverVertical
vc.modalPresentationStyle = .overFullScreen
self.present(vc, animated:true, completion:nil)
}
當我用完視圖控制器 B 后,我就這樣解散了它......
let vc = WellnessPlanEnrollmentController()
self.dismiss(animated: true, completion: {
vc.refreshView()
})
然后我正在呼叫的函式嘗試使用來自視圖控制器 B 的新資料更新我的 UI。但是,當我重新加載第一個視圖時,我得到一個奇怪的崩潰,說我試圖更新的標簽是 nil。
func refreshView() {
DispatchQueue.main.async {
self._petNameLabel.text = self.object.name
// crashes here because my label is nil???????
}
}
錯誤:FirstViewController.swift:128: Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value
我覺得這是因為當我呼叫該函式時視圖不在焦點上,但我不確定。
uj5u.com熱心網友回復:
這是失敗的,因為您創建了WellnessPlanEnrollmentController. 這個實體沒有連接到任何 Storyboard 或 View,所以它的所有 outlet 都是 nil。
可能的解決方案:
在您的控制器中創建一個委托B并在呈現之前分配它,并在關閉后呼叫它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/489140.html
