我在storyboard中创建了一个带有tableView的控制器。
编译并运行后,将显示tableView,但是当我使用self.view.subviews在viewDidLoad方法中获取其子视图时,我找不到tableView。
此外,我尝试在viewDidLoad中执行方法[self.tableView removeFromSuperview],但tableView仍会显示在最后。
似乎当viewDidLoad执行时,tableView还没有添加超级视图。但是,在storyboard创建的另一个控制器中,我可以在viewDidLoad中使用self.view.subviews获取tableView ...
我想知道是什么原因以及何时添加tableView。
答案 0 :(得分:0)
忽略我的评论,我不认为召唤超级是答案(虽然它仍然是一般的好习惯)。
文档不清楚,但您在viewDidLoad中唯一能够依赖的是视图本身已加载,而不是任何子视图,您发现的可能是也可能不是。
如果你确实需要访问子视图,它们可以保证在this SO answer中描述的viewDidLayoutSubviews中出现,但要注意,只要子视图被布局,就会调用它,这将是多次调用典型的应用程序生命周期(例如,当用户旋转设备时也会调用它)。
如果你真的需要在加载后立即进入子视图,你可以将它子类化并覆盖它自己的viewDidLoad方法。