【问题标题】:Swift after dismiss Current ViewController then the Presenting ViewController not calling viewWillAppear()Swift 在关闭 Current ViewController 之后,Presenting ViewController 没有调用 viewWillAppear()
【发布时间】:2019-09-17 19:39:16
【问题描述】:

就我而言,我使用了两个视图控制器VC1VC2。在这里,VC1 按钮单击到Present ModallyOver Full Screen 演示文稿,Cross Dissolve 转换到演示文稿 VC2。现在,从 VC2 关闭,然后我没有接到 VC1 viewWillAppear() 的电话。

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

为什么会发生以及如何解决这个问题?

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    来自Docs

    注意

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

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

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

    并将一些 viewWillLoad 逻辑移动(或重复)到完成处理程序。

    【讨论】:

    • 什么是替代解决方案?
    • @Shreeram Bhat 我也面临同样的问题。我无法理解您的解决方案,您能否提供详细的代码库?
    • @Shreeram Bhat 我无法理解上述答案。再解释一下。
    【解决方案2】:

    将演示文稿更改为Full screen 或如果您想坚持使用Over Full Screen,则将vc2 委托给vc1 并在dismiss 时调用委托方法。

    理解概念可以参考:https://medium.com/livefront/why-isnt-viewwillappear-getting-called-d02417b00396

    【讨论】:

      猜你喜欢
      • 2021-12-15
      • 1970-01-01
      • 1970-01-01
      • 2019-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-09
      • 2014-08-31
      相关资源
      最近更新 更多