我在界面构建器中创建了一个自定义视图,其中包含几个按钮。我在代码中创建了一个类作为“文件所有者”,将按钮连接到操作方法。
我如何使用这个课程?
我不能这样做......
StartScreen *ss = [[StartScreen alloc] initWithFrame: ...];
[self.window.contentView addSubView: ss];
...
因为这只会产生一个空视图。 (当然:StartScreen类对nib文件还不了解。)
我想做的是:
StartScreen *ss = LoadCustomViewFromNib(@"StartScreen");
[self.window.contentView addSubView: ss];
或者我可能要说类似
[self iWannaBeANibWithName: @"StartScreen"];
在StartScreen的构造函数中?
请帮忙...... (顺便说一句,我正在为Mac OS X 10.6开发)
答案 0 :(得分:4)
一种选择是使StartScreen
成为NSViewController
的子类,可能会将其名称更改为StartScreenController
。如果你的nib文件中有IBActions
和/或你想将视图控制代码放在它自己的类中,这是一个可能更模块化的解决方案。
StartScreenController
声明为NSViewController
IBOutlets
中声明StartScreenController
StartScreenController
view
插座连接到视图对象,并根据需要连接其他插座然后:
StartScreenController *ss = [[StartScreenController alloc] initWithNibName:@"nibname" bundle:nil];
[self.window.contentView addSubView:ss.view];
…
如果您没有使用垃圾收集,请不要忘记在不再需要时释放ss
。
答案 1 :(得分:2)
Nib加载函数是NSBundle
类的一部分。你可以像这样使用它......
@implementation StartScreen
- (id) init {
if ((self = [super init])) {
if (![NSBundle loadNibNamed:@"StartScreen" owner:self])
// error
// continue initializing
}
return self;
}