ios - 关于viewController的 "viewDidLoad"和 "viewWillAppear"方法

标签 ios uiviewcontroller viewdidload viewwillappear

我有一个关于上述两个方法的问题,因为在我的测试中我没有明确它们的调用顺序。我认为,首先,viewDidLoad 在第一次加载 viewController 时(如名称所示)被调用,并且在 init 方法之后立即被调用。然后,我认为一旦 viewDidLoad 返回,就会调用 viewWillAppear。如果您显示另一个 viewController,然后返回到这个 viewController,那么它应该已经加载并且只会调用 viewWillAppear

但是,在开发过程中,我给人的印象是调用 viewDidLoadviewWillAppear 时没有顺序......我无法在中找到此生命周期的清晰描述Apple 的文档,这实际上是如何工作的?

谢谢!

最佳答案

我想补充 Caleb 的回答:不要混淆 View Controller 和 View !名称 viewDidLoad 清楚地表明该方法在加载 view 之后调用。执行加载的是 View Controller 。

关于 View 生命周期和消息发送顺序的一些提示:

  • 不是官方 Apple 文档,但我找到了 this diagram非常有用,因为它包含几乎所有 UIViewController 的生命周期覆盖。
  • Resource Management in View Controllers 部分从 Apple 的“View Controller Programming Guide”中有一个流程图描述了 View 最初是如何加载的。它解释了 loadViewviewDidLoad,也结合了 Storyboard。
  • 本节Responding to Display-Related Notifications来自 Apple 的“View Controller Programming Guide”解释了如何响应 View 的出现和消失(viewWillAppear: 等)
  • 如果您计划实现容器 View Controller :UIViewController class reference很好地概述了您的子类需要如何发送消息。

我在这里停下来。您可以通过谷歌搜索“uiviewcontroller 生命周期”自行找到更多内容。

关于ios - 关于viewController的 "viewDidLoad"和 "viewWillAppear"方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17362095/

相关文章:

ios - 是否可以连接到 iTunes Connect 数据库?

iphone - 如何找出 UIViewController View 的确切框架?

ios - 访问 json 结构以在 iOS 中捕获数据。

IOS/自动布局 : When in lifecycle to set constraints for elements created in code

ios - 从没有 Controller 的 UITableView 触发 segue

objective-c - UIPopover 中的 UITextField

ios - 如果另一列存在,SQLite 更新列

iphone - 如何让 NSTimer 保持活力?

iphone - 如果父级处于纵向模式,如何在横向模式下加载 UIViewController?

objective-c - 从 UIView 的 subview 获取 UINavController?