当 UIViewController 重新聚焦时调用啥函数?

Posted

技术标签:

【中文标题】当 UIViewController 重新聚焦时调用啥函数?【英文标题】:What function is called when a UIViewController is back in focus?当 UIViewController 重新聚焦时调用什么函数? 【发布时间】:2018-08-28 13:22:17 【问题描述】:

我有一个单视图应用程序,它还显示了我使用另一个视图控制器制作的自定义弹出窗口。弹出视图控制器分配了以下内容:

 presentation: Over current context

当它出现时。当我关闭这个弹出视图控制器以显示第一个视图控制器时,我想知道调用了什么函数,以便我可以在该函数中做更多的事情。我已经测试了以下函数,但是当我关闭弹出窗口以显示第一个 viewController 时,它们都没有被调用。

class firstViewController: UIViewController 

    override func viewWillAppear(_ animated: Bool) 
        super.viewWillAppear(animated)
    
        print("viewWillAppear PdfViewController...")   
    


    override func viewDidLoad() 
        super.viewDidLoad()
    
        print("viewDidLoad PdfViewController ...")
    

【问题讨论】:

您应该始终在viewWillAppear 中调用super.viewWillAppear(animated) @RakeshaShastri - 我已经按照你的建议做了,但它并没有被称为 stil ....我已经通过添加更新了问题 @jamesMcKey 在当前上下文中的演示意味着子控制器将显示在父控制器的顶部。父控制器不会消失。这就是为什么不会调用父控制器的 viewWillAppear 和 viewDidAppear 的原因。您可以创建自己的自定义演示样式来获取回调。见这里:***.com/questions/30474034/… 这是您错过的一些提示,可能不会导致您的问题,但非常重要。 @Sh_Khan 给了你正确的答案。查找代表并实施他的答案。 【参考方案1】:

这取决于样式 overCurrentContext 不会调用 viewWillAppear/viewDidAppear ,例如 fullScreen 会,请在此处查找所有可能的样式

https://developer.apple.com/documentation/uikit/uimodalpresentationstyle

如果所选的不调用该方法,则在您关闭模式时为该方法实现委托

//

protocol DimissManager 
  func vcDismissed()

class FirstVc:UIViewController,DimissManager 

 func vcDismissed() 
   print("Dismissed")
 
 func showSecond() 
    let sec = storyboard
    sec.delegate = self ...... // note this assign may be in prepareForSegue if you use segues  
    self.present(sec.......
 

class SecondVc:UIViewController
   var delegate:DimissManager?

  @IBAction func dismiss(_ sender:UIButton) 
    delegate?.vcDismissed()
    self.dismiss(animated:true,completion:nil)
  

【讨论】:

你能帮我把它写成代码吗?我用更多信息更新了我的问题。 始终将委托声明为 WEAK,如下所示:“weak var delegate: DismissManager!”

以上是关于当 UIViewController 重新聚焦时调用啥函数?的主要内容,如果未能解决你的问题,请参考以下文章

Swift IOS:从通知打开应用程序时调用 UIviewController 的特定功能

每次在反应本机中聚焦页面时调用 componentWillMount

子类化 UIViewController 时调用 viewDidLoad 是啥?

当我的 UIViewController 被弹出时调用的方法?

viewController 关闭时调用的函数(当应用程序退出时)?

转换子视图时调用的 UIViewController viewDidLayoutSubviews