以编程方式实例化自定义视图控制器并通过标签获取子视图
Programmatically instantiate custom view controller and getting the subviews by tag
我有三个视图控制器,每个都在同一个自定义视图控制器下 class,还有一个页面视图控制器。我希望能够重用这三个视图控制器,但它们的子视图具有不同的内容。但是,当我尝试使用 [self.storyboard instantiateViewControllerWithIdentifier:identifier]
从页面视图控制器实例化其中一个视图控制器时,使用一种方法立即通过标签查找子视图,返回的子视图为空。有什么方法可以在以编程方式实例化视图控制器后立即通过标签获取子视图?
视图控制器的视图在即将显示之前不会被创建。它们不会在调用 instantiateViewControllerWithIdentifier:
后创建
您应该将访问视图控制器视图的代码放在 viewDidLoad
、viewWillAppear
或 viewDidAppear
中。
您不应尝试从外部对象操纵视图控制器的视图。这违反了封装原则,这是面向对象设计的一个重要原则。 (正如您所发现的,它通常也不起作用。)
如果您需要以编程方式对视图执行操作,您应该向视图控制器添加一个或多个 public 方法并调用这些方法以请求视图控制器对其视图进行调整。
我有三个视图控制器,每个都在同一个自定义视图控制器下 class,还有一个页面视图控制器。我希望能够重用这三个视图控制器,但它们的子视图具有不同的内容。但是,当我尝试使用 [self.storyboard instantiateViewControllerWithIdentifier:identifier]
从页面视图控制器实例化其中一个视图控制器时,使用一种方法立即通过标签查找子视图,返回的子视图为空。有什么方法可以在以编程方式实例化视图控制器后立即通过标签获取子视图?
视图控制器的视图在即将显示之前不会被创建。它们不会在调用 instantiateViewControllerWithIdentifier:
您应该将访问视图控制器视图的代码放在 viewDidLoad
、viewWillAppear
或 viewDidAppear
中。
您不应尝试从外部对象操纵视图控制器的视图。这违反了封装原则,这是面向对象设计的一个重要原则。 (正如您所发现的,它通常也不起作用。)
如果您需要以编程方式对视图执行操作,您应该向视图控制器添加一个或多个 public 方法并调用这些方法以请求视图控制器对其视图进行调整。