我在同一个自定义视图控制器类下分别拥有三个视图控制器和一个页面视图控制器。我希望能够重用这三个视图控制器,但是其子视图上的内容不同。但是,当我尝试使用[self.storyboard instantiateViewControllerWithIdentifier:identifier]
从页面视图控制器实例化这些视图控制器之一时,使用一种通过标签立即找到子视图的方法,返回的子视图为null。以编程方式实例化视图控制器后,有什么方法可以通过标签获得子视图?
最佳答案
在将要显示视图控制器之前,不会创建视图控制器的视图。调用instantiateViewControllerWithIdentifier:
后将不会创建它们
您应该将用于访问视图控制器视图的代码放在viewDidLoad
,viewWillAppear
或viewDidAppear
中。
您不应尝试从外部对象操纵视图控制器的视图。这违反了封装原则,即面向对象设计的重要原则。 (如您所知,它通常通常也不起作用。)
如果需要以编程方式对视图执行操作,则应将一个或多个公共方法添加到视图控制器,然后调用这些方法以要求视图控制器对其视图进行调整。