awakeFromNib vs Outlets - 当我们调用 awakeFromNib 时设置 outlets 和 segues
awakeFromNib vs Outlets - Do the outlets and segues set when we call awakeFromNib
我试图了解视图控制器的生命周期,但我读过一些关于 awakeFromNib
的相互矛盾的陈述。文档说所有出口都应该设置在 awakeFromNib
但 I see that it's not always true。在 awakeFromNib
、prepareForSegue
和网点何时可用之间的通话顺序是什么?
您的视图控制器及其视图层次结构在运行时从单独的 nib 文件加载。视图层次结构的出口在加载视图层次结构之前不会连接,这发生在视图控制器加载之后。 (我已经更深入地解释了这一点 in this answer。)
假设您在导航控制器中有一个“主”视图控制器。主视图控制器执行 segue 以推送“详细信息”视图控制器。以下是活动顺序:
详细视图控制器从其笔尖加载。如果情节提要场景包含其他顶级对象,也会加载这些对象。
详细视图控制器接收awakeFromNib
:详细视图控制器到场景中其他顶层对象的出口已连接,但视图层次结构的出口未连接。
主视图控制器接收 prepareForSegue
,segue 指向详细视图控制器。
Segue 要求导航控制器推送详细视图控制器。
导航控制器向详细视图控制器请求其视图,以添加到导航控制器的视图层次结构中。
详细视图控制器加载其视图层次结构 nib。这将详细视图控制器的出口连接到它的视图层次结构。
视图层次结构中的所有对象接收 awakeFromNib
。
详细视图控制器接收 viewDidLoad
.
我试图了解视图控制器的生命周期,但我读过一些关于 awakeFromNib
的相互矛盾的陈述。文档说所有出口都应该设置在 awakeFromNib
但 I see that it's not always true。在 awakeFromNib
、prepareForSegue
和网点何时可用之间的通话顺序是什么?
您的视图控制器及其视图层次结构在运行时从单独的 nib 文件加载。视图层次结构的出口在加载视图层次结构之前不会连接,这发生在视图控制器加载之后。 (我已经更深入地解释了这一点 in this answer。)
假设您在导航控制器中有一个“主”视图控制器。主视图控制器执行 segue 以推送“详细信息”视图控制器。以下是活动顺序:
详细视图控制器从其笔尖加载。如果情节提要场景包含其他顶级对象,也会加载这些对象。
详细视图控制器接收
awakeFromNib
:详细视图控制器到场景中其他顶层对象的出口已连接,但视图层次结构的出口未连接。主视图控制器接收
prepareForSegue
,segue 指向详细视图控制器。Segue 要求导航控制器推送详细视图控制器。
导航控制器向详细视图控制器请求其视图,以添加到导航控制器的视图层次结构中。
详细视图控制器加载其视图层次结构 nib。这将详细视图控制器的出口连接到它的视图层次结构。
视图层次结构中的所有对象接收
awakeFromNib
。详细视图控制器接收
viewDidLoad
.