在UIViewController
生命周期中的哪个点 self.view
属性保证填充所有正确的视图?注意:我不关心它们是否布局,只是它们存在于子视图数组中。 WWDC的视频说loadView
,viewDidLoad
和init
都没有附带这个保证,但viewWillLayoutSubviews
也是游戏后期。UIViewController子视图存在不变
我试图在这种情况下执行的任务是本地化。在一个普通的视图控制器类中,我想循环遍历所有子视图,看看它们是否有一个自定义属性集,用于标识附加到该视图的本地化字符串键,然后递归遍历所有视图子视图,直到视图底部层次达到。在这种情况下布局并不重要,只是在视图控制器中填充了子视图。
这个虽然呢? https://pbs.twimg.com/media/Cx4JzXvWgAASHHv.jpg Apple的WWDC视频指出,在'viewDidLoad'中,视图尚未处于超级视图中。这只适用于'self.view'还是适用于'self.view'的所有子视图? – barndog
到'self.view'。我没有在我的回答中说'self.view'有一个_superview_。你问过'self.view'和它的_subviews_,这就是我的回答。假设此时'self.view'在接口_处是愚蠢的。但是你并不是假设它,所以你很好。 – matt
有趣。我想我很好奇,如果这种限制不仅适用于视图控制器的意见,但它已经是子视图。这很好理解,谢谢@matt!我问的原因是我想对从nib加载的视图执行本地化,并且如果视图是为Regular,Regular(仅iPad)安装的,则视图不会显示在从loadNibNamed返回的子视图列表中(我使用'loadView'作为钩子)。我认为这可能与它有关,但如果'loadView'和'viewDidLoad'都具有这种不变性,我想不会。 – barndog