继承UIView。 init方法永远不会被调用
我在接口构建器上有一个UIView
。在我的视图控制器中,我有一个IBOutlet MyUIView
指向接口构建器上的UIView
。继承UIView。 init方法永远不会被调用
我改变了UIView
的类“MyUIView
”(自定义UIView类),但它似乎没有任何的子类的init
方法被解雇。
我在做什么错?
相反的init
需要调用initWithCoder
第一然后调用init
为:
- (id)initWithCoder:(NSCoder *)aDecoder {
if ((self = [super initWithCoder:aDecoder])) {
[self baseClassInit];
}
return self;
}
- (void)baseClassInit {
//initialize all ivars and properties
}
谢谢我会检查出来! – 2013-02-28 16:41:06
您还需要*实现*'initWithCoder:',如代码那样。简单地从一些随机的地方调用它,而单独重写'init'不会完成这项工作。 – 2013-03-02 02:53:27
简短的回答:您需要使用initWithCoder:
。
从initWithFrame:
文档:
如果您使用Interface Builder来设计自己的界面,当你的视图对象随后从笔尖文件加载不调用此方法。 nib文件中的对象被重构,然后使用其initWithCoder:方法进行初始化,该方法修改视图的属性以匹配存储在nib文件中的属性。
如果您使用的是nib/xib/Storyboard文件,请使用initWithCoder:
。如果您以编程方式创建视图,则可以使用init
或initWithFrame:
。
你可以展示你的代码吗? – nsgulliver 2013-02-28 16:31:13
代码中没有任何东西!在界面生成器中,我选择UIView并将类设置为“ShadowView”。我在ShadowView init方法中放置了断点,但它永远不会进入这些方法。 – 2013-02-28 16:34:45