呈现ViewController

时间:2011-01-18 18:17:16

标签: iphone uiviewcontroller

呈现ViewController会导致呈现的控制器运行其viewDidLoad方法吗?

如果加载了view1并且显示了另一个。然后触发一些东西来呈现view1。它会运行viewDidLoad方法吗?

如果不是应该怎么做? ViewDidAppear?

2 个答案:

答案 0 :(得分:4)

在Jesse转发的基础上,当视图加载到内存中时调用viewDidLoad(通常是自应用程序启动以来第一次显示视图控制器 - 简化,但现在就足够了)。

当你显示其他视图控制器然后返回一些如何到这个原始的“view1”视图控制器时,除非有一个内存事件从内存中放弃它,它不会再次调用viewDidLoad

相反,它将按顺序调用以下内容:

  1. viewWillAppear:
  2. viewDidAppear:
  3. viewWillAppear:中,您可以在显示视图控制器之前“在屏幕外”执行操作。

    viewDidAppear:中,您可以执行适用于视图控制器视图已经可见的其他操作。例如,您希望运行一些用户将在视图控制器完全可见时看到的小动画。

    在这两种方法中,请确保在执行任何操作之前调用super的实现。另外,要了解此生命周期,请在每个方法(viewDidLoad,viewWillAppear,viewDidAppear)中设置断点或NSLog()语句,以查看它们何时被调用。

    在视觉控制器上的Apple文档中有一个值得花20分钟读取的概念 - 它将清除很多关于视图控制器的关键生命周期信息,这些是中心到iOS开发。请参阅:

    中的“了解View Management LifeCycle”部分

    http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/BasicViewControllers/BasicViewControllers.html%23//apple_ref/doc/uid/TP40007457-CH101-SW1

答案 1 :(得分:1)

viewDidLoad仅在视图加载到内存时调用。通常是它第一次出现(如果有内存转储等,可能会更频繁)。

每次viewController的视图成为窗口中的“活动”视图时,都会调用

viewDidAppear: