子视图何时从故事板添加到超级视图?

时间:2016-04-19 07:23:54

标签: ios objective-c xcode storyboard

我在storyboard中创建了一个带有tableView的控制器。

编译并运行后,将显示tableView,但是当我使用self.view.subviews在viewDidLoad方法中获取其子视图时,我找不到tableView。

此外,我尝试在viewDidLoad中执行方法[self.tableView removeFromSuperview],但tableView仍会显示在最后。

似乎当viewDidLoad执行时,tableView还没有添加超级视图。但是,在storyboard创建的另一个控制器中,我可以在viewDidLoad中使用self.view.subviews获取tableView ...

我想知道是什么原因以及何时添加tableView。

1 个答案:

答案 0 :(得分:0)

忽略我的评论,我不认为召唤超级是答案(虽然它仍然是一般的好习惯)。

文档不清楚,但您在viewDidLoad中唯一能够依赖的是视图本身已加载,而不是任何子视图,您发现的可能是也可能不是。

如果你确实需要访问子视图,它们可以保证在this SO answer中描述的viewDidLayoutSubviews中出现,但要注意,只要子视图被布局,就会调用它,这将是多次调用典型的应用程序生命周期(例如,当用户旋转设备时也会调用它)。

如果你真的需要在加载后立即进入子视图,你可以将它子类化并覆盖它自己的viewDidLoad方法。