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

时间:2016-04-15 07:11:26

标签: ios objective-c

我一直认为只要你的视图出现在屏幕上就会调用viewDidAppear,但我已经被告知,例如,当你背景应用程序时(通过按主页按钮)然后带它备份,viewDidAppear未被调用(转到后台"不会从视图层次结构中删除当前视图")。那么,对于#34;出现"的观点实际上意味着什么呢?此外,对于"加载"的观点意味着什么,即。它何时实际发生(例如,通过触摸应用程序图标打开应用程序等)

3 个答案:

答案 0 :(得分:10)

是Heirarchy这个: - Alwys Whenevr您的视图控制器运行它就像这样

1st ViewDidLoad

2nd ViewAppear

3rd ViewDidAppear

第4次ViewWillDisAppear

第五次ViewDidDisAppear

最后6次ViewDidUnload

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

假设您在咖啡馆

<强>第一 ==&GT;您订购咖啡然后在此服务致电然后他们填充您的咖啡注意< / strong>加载或填充所有包含像杯子上的咖啡被称为 ViewDidLoad

<强>第二 ==&GT;&GT;当服务将咖啡放在您的桌面上时(注意被称为 ViewWillAppear 您的咖啡就像您的ViewController 查看

<强>第三 ==&GT;&GT;并且当您看到 Coffe 注意被称为 ViewDidAppear 您的视图可以在屏幕上看到的地方就像您看到咖啡时那样)

<强>第四 ==&GT;&GT;之后当你完成你的 Macachino咖啡并且是空的(注意被称为 ViewWillDisAppear 在哪里卸货或空的过程是StandWillDisAppear)

5&amp;第六 ==&GT;&GT;之后当服务到来并且它拿起你的咖啡并且当你的眼睛消失时从你那里收回(注意被称为 ViewDidDisAppear 当视图或你的屏幕像你的杯子一样空白时)最后所有过程都在这里完成....

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

上传本故事的快乐编码

答案 1 :(得分:2)

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

viewDidLoad

将View Controller添加到另一个视图控制器层次结构时,

viewDidAppear调用。通常在所有动画完成后,但不是必需的。

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

答案 2 :(得分:2)

加载视图后会调用

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

一旦在屏幕上看到加载的视图,就会调用

viewDidAppear。它在视图出现后被调用。 每次在加载视图后看到视图时都会调用ViewDidAppear。如果你推动然后在该视图上弹出任何其他viewController,则再次调用viewDidAppear

视图生命周期控制器:

  1. viewDidLoad中
  2. viewWillAppear中
  3. ViewDidAppear