当尝试更新上一个视图控制器的UI时崩溃



好的,我有一个视图控制器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

我觉得这是因为当我调用函数时视图不在焦点中,但我不确定。

失败是因为您创建了一个新的WellnessPlanEnrollmentController实例。这个实例没有连接到任何Storyboard或View,所以它所有的outlet都是nil。

可能的解决方案:

在控制器B中创建一个委托,并在呈现前分配它,在解散后调用它。

相关内容

  • 没有找到相关文章

最新更新