我有一个关于上述两个方法的问题,因为在我的测试中我没有明确它们的调用顺序。我认为,首先,viewDidLoad
在第一次加载 viewController 时(如名称所示)被调用,并且在 init 方法之后立即被调用。然后,我认为一旦 viewDidLoad
返回,就会调用 viewWillAppear
。如果您显示另一个 viewController,然后返回到这个 viewController,那么它应该已经加载并且只会调用 viewWillAppear
。
但是,在开发过程中,我给人的印象是调用 viewDidLoad
和 viewWillAppear
时没有顺序......我无法在中找到此生命周期的清晰描述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 最初是如何加载的。它解释了
loadView
和viewDidLoad
,也结合了 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/