【问题标题】:When is viewDidLoad / viewDidAppear actually called? [duplicate]何时实际调用 viewDidLoad / viewDidAppear? [复制]
【发布时间】:2016-04-15 07:11:26
【问题描述】:

我一直认为每当您的视图出现在屏幕上时都会调用viewDidAppear,但有人告诉我,例如,当您将应用程序设置为背景(通过按主页按钮)然后将其重新启动时,@ 987654323@ 未被调用(进入后台“不会从视图层次结构中删除当前视图”)。那么,视图“出现”实际上意味着什么?此外,“加载”视图意味着什么,即。它实际发生在什么时候(例如,当通过触摸应用程序图标打开应用程序时等)

【问题讨论】:

标签: ios objective-c


【解决方案1】:

是这样的层次结构吗:-当你的视图控制器运行时总是这样

第一个 ViewDidLoad

第二个视图出现

第 3 个 ViewDidAppear

第四次查看WillDisAppear

第 5 次查看DidDisAppear

最后 6 个 ViewDidUnload

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

假设你在咖啡馆

第一次==>您点了咖啡,然后在此服务您的致电,然后他们将您的咖啡装满 杯子注意加载或填充所有像杯子上的咖啡一样的东西称为ViewDidLoad

第 2 次​​strong>==>> 当服务把 Coffee 放在你的桌子上时(Note 被称为 ViewWillAppear 在哪里你的咖啡就像你的 ViewController View )

第 3 次==>> 当你看到你的 咖啡 时(Note 被称为 ViewDidAppear 你的观点在哪里可以像看到咖啡一样在屏幕上看到)

第 4 次==>> 之后当你 完成 你的 Macachino 咖啡 并且是空的(注意 是调用 ViewWillDisAppear 其中 Unloading 或 Process Of Empty 代表 ViewWillDisAppear )

第 5 和第 6 次==>> 之后,服务来了,它会拿起你的咖啡杯子,当咖啡从你的眼中消失时( Note 被称为 ViewDidDisAppear 当视图或屏幕变为空白时,就像您的杯子一样),最后所有过程都在这里完成......

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

感谢列出这个故事快乐编码

【讨论】:

  • TL;DR - 很酷的类比 ;)
  • 真的很喜欢这个答案
【解决方案2】:

viewDidLoad 在所有出口都从 Storyboard 初始化时被调用。

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

如果您实现将包含一些子视图控制器的自定义控制器,您将在将子控制器添加到父控制器时调用它们的didMoveToParentViewController。所以,每当你调用这个方法viewDidAppear的子VC都会被自动调用。

【讨论】:

    【解决方案3】:

    viewDidLoad 在视图加载后调用。它只在视图初始化并推送或呈现时调用一次。

    viewDidAppear 在屏幕上看到加载的视图后被调用。在视图出现后调用。 ViewDidAppear 每次在加载后看到视图时都会调用。如果您在该视图上推送然后弹出任何其他视图控制器,则再次调用 viewDidAppear

    视图控制器的生命周期:

    1. ViewDidLoad
    2. ViewWillAppear
    3. ViewDidAppear

    【讨论】:

    • 不完全正确。当弹出当前 ViewController 上方的弹出模式 ViewController 时,不会调用 viewWillAppear。
    猜你喜欢
    • 2013-02-21
    • 1970-01-01
    • 2017-06-12
    • 1970-01-01
    • 1970-01-01
    • 2016-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多