我试图了解视图控制器的生命周期,并且阅读了一些关于awakeFromNib的矛盾声明。文档说所有插座都应在awakeFromNib中设置,但应在I see that it's not always true中设置。 awakeFromNibprepareForSegue之间的呼叫顺序是什么?何时可以使用出口?

最佳答案

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

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


细节视图控制器从其笔尖加载。如果情节提要板场景包含其他顶级对象,则也会加载这些对象。
局部视图控制器接收awakeFromNib:局部视图控制器到场景中其他顶级对象的出口已连接,但未连接到视图层次结构的出口。
主视图控制器接收prepareForSegue,并且segue指向详细视图控制器。
Segue要求导航控制器推送细节视图控制器。
导航控制器向详细视图控制器请求其视图,以添加到导航控制器的视图层次结构中。
详细视图控制器加载其视图层次结构笔尖。这会将详细视图控制器的出口连接到其视图层次结构。
视图层次结构中的所有对象均接收awakeFromNib
详细视图控制器接收viewDidLoad

关于ios - awakeFromNib vs奥特莱斯-在我们叫awakeFromNib时设置奥特莱斯和商店,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37147871/

10-10 19:15