在我的详细信息控制器中,单击此按钮并返回主控制器。
@IBAction func backButtonClick(_ sender: UIButton) {
dismiss(animated: true, completion: nil)
}
为什么主要功能viewDidLoad没有再次点击?
viewDidLoad()
返回时如何更新主视图?
答案 0 :(得分:4)
启动VC时,您需要实施viewDidAppear
viewDidLoad
仅触发一次
override func viewDidAppear(_animated:Bool) {
super.viewDidAppear(animated)
}
答案 1 :(得分:2)
为什么主要功能viewDidLoad没有再次点击?
因为在加载了视图控制器的视图时调用了viewDidLoad()
方法,即当视图控制器的新视图分配到内存中时会调用它。因此,当返回(从当前视图控制器中解除/弹出)到视图控制器时,viewDidLoad
不会再次被调用,因为它已经被加载,它仍然在内存中。
返回时如何更新主视图?
嗯,实际上viewDidLoad
并不是视图控制器视图生命周期的唯一方法,当然还有其他选项可以实现你想要的东西。其中一个合法的有效解决方案是移动应该在"返回时调用的代码。从viewDidLoad
到viewWillAppear(_:)
方法:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// here we go...
}
在显示视图控制器的视图之前调用它,这意味着即使在两种情况下都会调用它:在呈现/推送到视图控制器时以及在解除/弹出后甚至
<强>此外:强>
尽管如此viewWillAppear(_:)
不仅是您问题的解决方案,还有其他方法会在&#34;返回&#34;一个视图控制器,我建议检查一下:
Looking to understand the iOS UIViewController lifecycle
以及:
UIViewController viewDidLoad vs. viewWillAppear: What is the proper division of labor?