返回详细信息viewcontroller时,主视图是否未更新?

时间:2018-05-22 17:49:03

标签: ios swift

在我的详细信息控制器中,单击此按钮并返回主控制器。

 @IBAction func backButtonClick(_ sender: UIButton) {
        dismiss(animated: true, completion: nil)
    }

为什么主要功能viewDidLoad没有再次点击?

viewDidLoad()

返回时如何更新主视图?

2 个答案:

答案 0 :(得分:4)

启动VC时,您需要实施viewDidAppear viewDidLoad仅触发一次

override func viewDidAppear(_animated:Bool) {
  super.viewDidAppear(animated)
}

答案 1 :(得分:2)

  

为什么主要功能viewDidLoad没有再次点击?

因为在加载了视图控制器的视图时调用了viewDidLoad()方法,即当视图控制器的新视图分配到内存中时会调用它。因此,当返回(从当前视图控制器中解除/弹出)到视图控制器时,viewDidLoad不会再次被调用,因为它已经被加载,它仍然在内存中。

  

返回时如何更新主视图?

嗯,实际上viewDidLoad并不是视图控制器视图生命周期的唯一方法,当然还有其他选项可以实现你想要的东西。其中一个合法的有效解决方案是移动应该在"返回时调用的代码。从viewDidLoadviewWillAppear(_:)方法:

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?

相关问题