什么时候实际调用viewDidLoad / viewDidAppear?

我一直以为只要你的视图出现在屏幕上就会调用viewDidAppear ,但我被告知,例如,当你背景应用程序时(通过按主页按钮)然后重新启动它, viewDidAppear不会被调用(进行中)到背景“不会从视图层次结构中删除当前视图”)。 那么,对于“出现”的观点,它实际上意味着什么? 此外,对于“加载”视图意味着什么,即。 它何时实际发生(例如,通过触摸应用程序图标等打开应用程序时)

Heirarchy是这样的: – Alwys Whenevr你的视图控制器运行就像这样

第一个ViewDidLoad

第二次观看

第三个ViewDidAppear

第四个ViewWillDisAppear

第五个ViewDidDisAppear

最后6个ViewDidUnload

你可以通过这个简单的生活来理解这个例子: –

假设你在咖啡馆

第一次 ==>你订购的咖啡然后在这里服务你的电话然后他们在杯子上 填满你的咖啡( 注意加载或填充所有包含像咖啡杯上的咖啡被称为ViewDidLoad

第二个 == >>当服务时将咖啡放在你的桌子上( 注意被称为ViewWillAppear,你的咖啡就像你的ViewController 视图

第3 == >>当你看到你的咖啡时注意被称为ViewDidAppear你的视图可以在你的屏幕上看到的就像你看到你的咖啡一样)

第4 == >>之后当你完成你的Macachino咖啡并且是空的时( 注意被称为ViewWillDisAppear,卸载或空的过程代表ViewWillDisAppear)

5号和6号 == >>之后当服务到来时它会拿起你的咖啡杯并从你身上消失当你的眼睛消失的时候( 注意被称为ViewDidDisAppear当你的视图或你的屏幕就像你的杯子一样空白时)最后所有过程都在这里完成….

如果你再次订购Diff。 咖啡Aur相同的咖啡,所有步骤再次调用相同,你有多个ViewController,他们再次呼叫A – B – A – B

Thx上市这个故事快乐编码

从故事板初始化所有出口时调用viewDidLoad

将View Controller添加到另一个视图控制器层次结构时, viewDidAppear调用。 通常在所有动画完成后,但不是必需的。

如果实现包含一些子视图控制器的自定义控制器,则在将它们添加到父控制器时,将调用子控制器的didMoveToParentViewController 。 因此,无论何时调用此方法,都会自动调用子VC的viewDidAppear

当视图控制器首次加载到内存中时, viewDidLoad只调用一次。 这是您希望实例化任何实例变量并构建在此视图控制器的整个生命周期中存在的任何视图的位置。 但是,此时通常尚未显示该视图。

viewDidAppear在视图实际可见时被调用,并且可以在视图控制器的生命周期中多次调用(例如,当模式视图控制器被关闭并且视图再次可见时)。 您可以在此处执行任何布局操作或在UI中执行任何绘图 – 例如,呈现模态视图控制器。 但是,你在这里做的任何事都应该是可重复的。 最好不要在这里保留内容,否则如果在视图消失时不释放内存,则会导致内存泄漏。

请参阅: 文档

加载视图后调用viewDidLoad 。 只有在初始化并推送或显示视图时才会调用它。

一旦在屏幕上看到加载的视图,就会调用viewDidAppear 。 它在视图出现后被调用。 每次加载视图后都会看到ViewDidAppear 。 如果你推动然后在该视图上弹出任何其他viewController,那么再次调用viewDidAppear

生命周期视图控制器:

  1. viewDidLoad中
  2. viewWillAppear中
  3. ViewDidAppear