从一个视图控制器转换到另一个视图控制器时,视图方法的调用顺序是什么?

时间:2011-11-19 17:07:57

标签: ios cocoa-touch

当我从一个视图控制器(我们称之为MasterViewController)转换到另一个视图控制器(称为DetailViewController)时,viewWillDisappear:viewWillAppear:等的顺序如何。每个控制器上的方法都叫做?

我怀疑当我的主视图消失时调用的一些清理代码会干扰我的详细视图中的初始化代码。我查看了Apple的文档,但找不到任何涉及多个视图控制器的信息。

1 个答案:

答案 0 :(得分:7)

我创建了一个简单的基于UINavigationController的项目,并添加了一些NSLog语句,以找出它们被调用的顺序。

  1. 大师prepareForSegue:
  2. 详情viewDidLoad
  3. 大师viewWillDisappear:
  4. 详情viewWillAppear:
  5. 显示新视图(带或不带动画)
  6. 主人viewDidDisappear: (动画完成后)
  7. 详情viewDidAppear:
  8. 但是,使用UITabViewController在视图之间切换时,顺序是不同的:

    1. SecondTab viewDidLoad
    2. SecondTab viewWillAppear:
    3. FirstTab viewWillDisappear:
    4. 显示新视图。
    5. FirstTab viewDidDisappear:
    6. SecondTab viewDidAppear:
    7. 因此,您似乎无法始终依赖于以相同顺序发生的这些事件 - 它可能会根据您正在转换的视图控制器的性质而有所不同。

      我在这里错过了哪些重点?