viewWillAppear、viewDidAppear、viewWillDisappear、viewDidDisappear 指南

Posted

技术标签:

【中文标题】viewWillAppear、viewDidAppear、viewWillDisappear、viewDidDisappear 指南【英文标题】:Guidelines for viewWillAppear, viewDidAppear, viewWillDisappear, viewDidDisappear 【发布时间】:2011-09-12 10:16:39 【问题描述】:

是否有正确使用这些方法的指南?特别是,我想知道我可以在其中使用什么类型的代码。

例如,如果我必须调用从 WS 检索数据的方法,我必须在哪里调用它?我在哪里可以注册/取消注册 NSNotification?等等

【问题讨论】:

【参考方案1】:

来自UIViewController

viewWillAppear:

在接收者的视图即将在屏幕上显示之前以及配置任何动画以显示视图之前调用此方法。您可以覆盖此方法以执行与呈现视图相关的自定义任务。例如,您可以使用此方法更改状态栏的方向或样式,以与正在呈现的视图的方向或样式相协调。如果你重写了这个方法,你必须在你的实现中调用 super。

viewWillDisappear:

当视图从其窗口中移除或被另一个视图覆盖时调用此方法。在实际移除或覆盖视图之前以及配置任何动画之前调用此方法。

子类可以覆盖此方法并使用它来提交编辑更改、退出视图的第一响应者状态或执行其他相关任务。例如,您可以使用此方法恢复对第一次呈现视图时在 viewDidDisappear: 方法中对状态栏的方向或样式所做的更改。如果你重写了这个方法,你必须在你的实现中调用 super。

viewDidAppear:

您可以重写此方法来执行与呈现视图相关的其他任务。如果你重写了这个方法,你必须在你的实现中调用 super。

viewDidDisappear:

您可以重写此方法以执行与关闭或隐藏视图相关的其他任务。如果你重写了这个方法,你必须在你的实现中调用 super。

更多信息您可以查看View Controller Programming Guide for ios

【讨论】:

【参考方案2】:

答案的补充:您应该在实现开始时调用 super viewWillAppear: 等方法,并在方法结束时调用 viewDidAppear:。超类应该从初始化开始,最后终止。

【讨论】:

以上是关于viewWillAppear、viewDidAppear、viewWillDisappear、viewDidDisappear 指南的主要内容,如果未能解决你的问题,请参考以下文章

View & Controller 一些方法的执行顺序

IOS开发基础知识--碎片35

[ IOS ] 视图控制对象ViewController的生命周期

当视图第一次消失时,ios icarousel 视图的内容偏移量正在发生变化

重写viewWillAppear 和 viewWillDisAppear时[super viewWillAppear] 和 [super viewWillDisappear]的调用位置

从 `ViewWillAppear` 触发 `TableViewCell` 函数