我UIView
在界面生成器上有一个。在我的视图控制器中,我有一个IBOutlet MyUIView
指向UIView
界面生成器上的。
我将类更改UIView
为“ MyUIView
”(自定义 UIView 类),但似乎没有init
触发子类的任何方法。
我究竟做错了什么?
我UIView
在界面生成器上有一个。在我的视图控制器中,我有一个IBOutlet MyUIView
指向UIView
界面生成器上的。
我将类更改UIView
为“ MyUIView
”(自定义 UIView 类),但似乎没有init
触发子类的任何方法。
我究竟做错了什么?
Instead of init
you need to call initWithCoder
first then call init
as :
- (id)initWithCoder:(NSCoder *)aDecoder {
if ((self = [super initWithCoder:aDecoder])) {
[self baseClassInit];
}
return self;
}
- (void)baseClassInit {
//initialize all ivars and properties
}
简短的回答:您需要使用initWithCoder:
.
从initWithFrame:
文档:
如果您使用 Interface Builder 来设计您的界面,则当您的视图对象随后从 nib 文件加载时,不会调用此方法。nib 文件中的对象被重构,然后使用它们的 initWithCoder: 方法进行初始化,该方法修改视图的属性以匹配存储在 nib 文件中的属性。
如果您使用的是 nib / xib / Storyboard 文件,请使用initWithCoder:
. 如果您以编程方式创建视图,则可以使用init
或initWithFrame:
。