0

我试图了解视图控制器的生命周期,但我已经阅读了一些关于awakeFromNib. 文档说应该设置所有网点,awakeFromNib我发现它并不总是正确的。之间的呼叫顺序是什么awakeFromNibprepareForSegue插座何时可用?

4

1 回答 1

1

您的视图控制器及其视图层次结构在运行时从单独的 nib 文件加载。在加载视图层次结构之前,不会连接到视图层次结构的出口,这发生在加载视图控制器之后。(我已经在这个答案中更深入地解释了这一点。)

假设您在导航控制器中有一个“主”视图控制器。主视图控制器执行 segue 以推送“详细”视图控制器。以下是事件顺序:

  1. 详细视图控制器从其 nib 加载。如果情节提要场景包含其他顶级对象,也会加载这些对象。

  2. 细节视图控制器接收awakeFromNib:细节视图控制器到场景中其他顶级对象的出口被连接,但视图层次结构的出口没有。

  3. 主视图控制器接收prepareForSegue指向详细视图控制器的 segue。

  4. Segue 要求导航控制器推送详细视图控制器。

  5. 导航控制器向详细视图控制器询问其视图,以添加到导航控制器的视图层次结构中。

  6. 详细视图控制器加载其视图层次结构 nib。这将详细视图控制器的出口连接到其视图层次结构。

  7. 视图层次结构中的所有对象都接收awakeFromNib.

  8. 详细视图控制器接收viewDidLoad.

于 2016-05-12T15:38:32.200 回答