当手动加载视图时,开发人员在初始化时仍然处于控制之中,我们选择要调用的初始化程序,要设置的变量等。
从故事板segue加载视图时...初始化程序会发生什么?应该在哪里设置变量我希望在加载视图后可用?
请帮我理解这里的顺序。如何在这里创建类的实例,谁创建它,我们如何干预并帮助我们按照自己的喜好进行设置?
答案 0 :(得分:92)
从nib或storyboard加载视图时,会调用-initWithCoder:
方法。与-initWithFrame:
类似,-initWithCoder:
是UIView的指定初始化程序。如果您要为UIView子类进行任何自定义初始化,则应确保这两种方法都发生了这种情况。一种常见的技术是添加从-initWithFrame:
和-initWithCoder:
调用的通用初始化方法。有关更详细的说明,请参阅my answer至Custom view and implementing init method?。
请注意-initWithFrame:
的文档说明:
如果使用Interface Builder设计界面,则此方法为 随后从笔尖加载视图对象时不调用 文件。重构nib文件中的对象然后进行初始化 使用他们的initWithCoder:方法,它修改了属性 视图以匹配存储在nib文件中的属性。