【问题标题】:View Controller dismissing and reappearing previous view Controller视图控制器关闭并重新出现以前的视图控制器
【发布时间】:2017-11-21 06:36:22
【问题描述】:

我是 iOS 开发和 Swift 的新手,我对视图控制器事件有疑问,当顶部视图控制器关闭并且之前的视图控制器再次显示时,应该自动调用什么事件?

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

【问题讨论】:

  • 使用 viewWillAppear 和 viewWillDisappear

标签: ios swift uiviewcontroller


【解决方案1】:

根据您的情况,

View Controller A 知道它会通过实现 UIViewController 拖曳方法之一重新出现-取决于您的要求-:

通知视图控制器它的视图即将被添加到 查看层次结构。

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(_:).

【讨论】:

  • 谢谢艾哈迈德 F
  • @SachinthaUdara 很高兴为您提供帮助 :)
猜你喜欢
  • 1970-01-01
  • 2016-11-27
  • 2017-07-09
  • 1970-01-01
  • 1970-01-01
  • 2016-02-11
  • 2017-02-03
  • 2016-11-20
  • 1970-01-01
相关资源
最近更新 更多