【发布时间】:2018-02-14 06:15:00
【问题描述】:
我创建了一个XIB。
我创建了这个名为MyCustomView 的类并将其分配给XIB 的文件所有者。
- (instancetype)initWithCoder:(NSCoder *)aDecoder{
self = [super initWithCoder:aDecoder];
if (self) [self load];
return self;
}
- (instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) [self load];
return self;
}
- (void)load {
NSArray* topLevelObjects;
[[NSBundle mainBundle] loadNibNamed:@"MyCustomView"
owner:self
topLevelObjects:&topLevelObjects];
NSView* view;
for (id aView in topLevelObjects) {
if ([umaVista isKindOfClass:[NSView class]]) {
view = umaVista;
break;
}
}
[self addSubview:view];
view.frame = self.bounds;
}
我在主应用上创建了一个NSView。
我将该视图更改为MyCustomView。
我运行应用程序。 MyCustomView 的 initWithCoder 不运行。 initWithFrame 不运行。 awakeFromNib 不运行。
什么都没有发生。
有什么想法吗?
【问题讨论】:
-
“将其分配给
XIB的第一响应者”是什么意思?您不能将任何内容“分配”给 First Responder,这是一个代表动态 First Responder 值的代理项。 -
什么意思?这就是网络上所有教程的说明。
-
你的意思是你把它分配给“文件的所有者”吗?
-
啊,对不起,我是说文件所有者...
-
密切相关(同样的原因,真的):-awakeFromNib for File's Owner
标签: macos cocoa nsview initwithcoder initwithframe