为什么self.view调用subview setter方法?

时间:2013-01-12 03:29:43

标签: objective-c cocoa-touch subview setter

我有一个包含多个子视图的自定义视图控制器。每个子视图都通过IBOutlet属性连接到视图控制器的.m文件。这些子视图具有自定义设置器,可根据子视图是否显示内容来调整其他子视图的大小。

现在看来initWithCoder:在调用viewDidLoad之前调用了这些自定义设置器。 (我希望/假设这是正常的。)

我的问题是调用self.view访问self.view的子视图的setter方法。我目前的理解是,这不应该是必要的。有人能解释一下这里发生了什么吗?我宁愿这不会发生,因为我不打算通过访问self.view来设置任何内容。

以下是代码:https://github.com/kenmhaggerty/Sandbox

1 个答案:

答案 0 :(得分:0)

在视图控制器上调用self.view会导致它从nib加载其视图(如果尚未这样做)。这将实例化nib中的所有对象(使用initWithCoder :)并设置任何出口的值(使用您的访问器方法)。然后它调用viewDidLoad,此时nib中的所有内容都将存在。

您的插座设置器方法可能不适合进行布局调整。使用基于约束的布局,该布局将自动适应子视图大小的变化,或使用viewDidLayoutSubviews,或使用您用于将模型信息传递给这些子视图的方法。