我有一个包含多个子视图的自定义视图控制器。每个子视图都通过IBOutlet属性连接到视图控制器的.m文件。这些子视图具有自定义设置器,可根据子视图是否显示内容来调整其他子视图的大小。
现在看来initWithCoder:
在调用viewDidLoad
之前调用了这些自定义设置器。 (我希望/假设这是正常的。)
我的问题是调用self.view
访问self.view的子视图的setter方法。我目前的理解是,这不应该是必要的。有人能解释一下这里发生了什么吗?我宁愿这不会发生,因为我不打算通过访问self.view
来设置任何内容。
答案 0 :(得分:0)
在视图控制器上调用self.view会导致它从nib加载其视图(如果尚未这样做)。这将实例化nib中的所有对象(使用initWithCoder :)并设置任何出口的值(使用您的访问器方法)。然后它调用viewDidLoad,此时nib中的所有内容都将存在。
您的插座设置器方法可能不适合进行布局调整。使用基于约束的布局,该布局将自动适应子视图大小的变化,或使用viewDidLayoutSubviews,或使用您用于将模型信息传递给这些子视图的方法。