设置从故事板加载的视图控制器子视图

时间:2014-10-25 20:16:52

标签: ios objective-c uiviewcontroller

我有一个自定义视图控制器,我从故事板加载。当我尝试设置其中一个子视图时没有任何反应(仍然是通用的白色视图)。我不明白的是,如果我尝试设置VC.view它工作正常。为什么是这样?从故事板加载后,似乎所有内容都已初始化。我在哪里设置VS的子视图?

1 个答案:

答案 0 :(得分:0)

是的,这种略微混乱的行为是“应该”如何工作的。加载视图控制器时,其视图不是 - 至少在实际需要之前。有关详细信息,请参阅this doc。只有在显示视图控制器时,它才会加载视图。正如您所发现的,这很烦人,因为您经常需要在之前设置一些子视图的属性(例如在prepareForSeguepushViewController:之前或presentViewController:)。

根据您观察到的情况,有一种解决方法。如果直接访问view属性,视图控制器将立即加载视图及其所有子视图。因此,如果要设置子视图属性,只需“触摸”视图本身:

NSLog(@"View tag is %i", viewController.view.tag);

然后您应该能够访问子视图。

或者,您可以在视图控制器的(非UI)属性中传递相关数据,然后在viewDidLoadviewWillAppear期间使用该数据设置子视图。