View Controller解除并重新显示先前的视图Controller

时间:2017-11-21 06:36:22

标签: ios swift uiviewcontroller

我是iOS开发和Swift的新手,我遇到了视图控制器事件的​​问题,当顶视图控制器解散并且再次显示前一个视图控制器时,应该自动调用什么事件?

其实我的意思是我有视图控制器A和视图控制器B,我点击视图控制器A的一个按钮(假设去B视图控制器)并移动视图控制器B然后执行视图控制器B的一些任务然后单击一个按钮(假设回去)在那个时候我解雇视图控制器B然后应用程序自动显示视图控制器A,在这种情况下我必须触发一个方法,但我的问题是视图控制器A它是如何知道它将重新出现显示?

1 个答案:

答案 0 :(得分:1)

根据您的情况,

查看控制器A 知道它通过实施UIViewController两种方法之一重新出现 - 对您的要求的依赖 - :

  

通知视图控制器其视图即将添加到a   查看层次结构。

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    // ...
}

或者

  

通知视图控制器其视图已添加到视图中   层次结构。

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    // ...
}

请注意,在显示/推送视图控制器时,这些方法也将被执行,而不仅仅是在被解除/弹出后。

在您的情况下,您需要知道 View Controller B 是否正在消失或已消失。为此,您还可以实现UIViewController方法之一 - 也可以根据您的要求进行索赔 - :

  

通知视图控制器其视图即将从中删除   视图层次结构。

或者

  

通知视图控制器其视图已从视图中删除   层次结构。

因此,假设当前呈现的视图控制器是视图控制器B并且它将被解除,则在两个视图控制器之间组合方法调用的层次结构应该如下:

查看控制器 B => viewWillDisappear(_:)

查看控制器 A => viewWillAppear(_:)

查看控制器 B => viewDidDisappear(_:)

查看控制器 A => viewDidAppear(_:)