在关闭当前ViewController之后快速显示,然后Presenting ViewController不调用viewWillAppear()

时间:2019-09-17 11:09:59

标签: ios swift

就我而言,我正在使用两个视图控制器VC1VC2。此处,VC1按钮单击Present ModallyOver Full ScreenCross Dissolve演示文稿,过渡到演示文稿VC2。现在,从VC2撤消,然后我没有接到VC1 viewWillAppear()的电话。

我没有为Present模型使用代码库。我正在使用Storyboard Segue

为什么会发生以及如何解决?

enter image description here

2 个答案:

答案 0 :(得分:0)

Docs

  

注意

     

如果视图控制器由内部的视图控制器提供   弹出框,不会在呈现视图控制器上调用此方法   提出的控制器被解雇后。

因此,根据文档,当ViewController模态提供另一个ViewController时,将不会调用此方法。要解决此问题,您需要使用

func dismiss(animated flag: Bool, 
  completion: (() -> Void)? = nil)

并将部分viewWillLoad逻辑移至(或重复)完成处理程序。

答案 1 :(得分:0)

将演示文稿更改为angular v.7.3,或者如果您要坚持使用Full screen,则使vc2成为vc1的委托,并在关闭时调用委托方法。

要了解该概念,您可以参考:https://medium.com/livefront/why-isnt-viewwillappear-getting-called-d02417b00396