以编程方式实例化自定义视图控制器并按标记获取子视图

时间:2016-06-08 18:26:31

标签: ios objective-c uiviewcontroller xcode-storyboard

我有三个视图控制器,每个视图控制器位于同一个自定义视图控制器类和一个页面视图控制器下。我希望能够重用这三个视图控制器,但在子视图中使用不同的内容。但是,当我尝试使用[self.storyboard instantiateViewControllerWithIdentifier:identifier]从页面视图控制器实例化其中一个视图控制器时,使用一种方法来查找后面的标记子视图,返回的子视图为空。有没有办法在以编程方式实例化视图控制器后立即通过标记获取子视图?

1 个答案:

答案 0 :(得分:1)

视图控制器的视图无法创建,直到即将显示。在致电instantiateViewControllerWithIdentifier:

之后,他们不会被创建

您应该在viewDidLoadviewWillAppearviewDidAppear中放置访问视图控制器视图的代码。

您不应该尝试从外部对象操纵视图控制器的视图。这违反了封装原则,这是面向对象设计的一个重要原则。 (正如你发现的那样,它通常也不起作用。)

如果需要以编程方式对视图执行操作,则应向视图控制器添加一个或多个公共方法,并调用这些方法以请求视图控制器对其视图进行调整。