2016-11-23 52 views
0

UIViewController生命周期中的哪个点 self.view属性保证填充所有正确的视图?注意:我不关心它们是否布局,只是它们存在于子视图数组中。 WWDC的视频说loadView,viewDidLoadinit都没有附带这个保证,但viewWillLayoutSubviews也是游戏后期。UIViewController子视图存在不变

我试图在这种情况下执行的任务是本地化。在一个普通的视图控制器类中,我想循环遍历所有子视图,看看它们是否有一个自定义属性集,用于标识附加到该视图的本地化字符串键,然后递归遍历所有视图子视图,直到视图底部层次达到。在这种情况下布局并不重要,只是在视图控制器中填充了子视图。

回答

2

同时在UIViewController的生命周期哪个点是保证所有的正确意见

大多数应用程序实现的最早时间是viewDidLoad填充self.view的子视图属性。此时,您保证self.view以及故事板中的所有子视图都存在,从故事板连接到此视图控制器的所有插座都已填充。

我不在乎,如果他们制定了或没有,只是它们的子视图数组

正是这样的存在。 self.view并且此时存在其加载笔尖的子视图,但其布局尚未发生,其框架未必正确。你不在乎,所以viewDidLoad是适合你的目的。

+0

这个虽然呢? https://pbs.twimg.com/media/Cx4JzXvWgAASHHv.jpg Apple的WWDC视频指出,在'viewDidLoad'中,视图尚未处于超级视图中。这只适用于'self.view'还是适用于'self.view'的所有子视图? – barndog

+0

到'self.view'。我没有在我的回答中说'self.view'有一个_superview_。你问过'self.view'和它的_subviews_,这就是我的回答。假设此时'self.view'在接口_处是愚蠢的。但是你并不是假设它,所以你很好。 – matt

+0

有趣。我想我很好奇,如果这种限制不仅适用于视图控制器的意见,但它已经是子视图。这很好理解,谢谢@matt!我问的原因是我想对从nib加载的视图执行本地化,并且如果视图是为Regular,Regular(仅iPad)安装的,则视图不会显示在从loadNibNamed返回的子视图列表中(我使用'loadView'作为钩子)。我认为这可能与它有关,但如果'loadView'和'viewDidLoad'都具有这种不变性,我想不会。 – barndog

相关问题