我的NSWindowController
有以下代码:
- (id)init {
[self initWithWindowNibName:@"MyWindow"];
[self loadWindow];
return self;
}
- (void)windowDidLoad
{
[super windowDidLoad];
NSWindow *window = [self window];
NSAssert(window != nil, @"Can’t get window!");
// do some stuff
}
NSAssert
失败。
为什么?
我怎样才能看到窗口?
答案 0 :(得分:3)
这里有两个问题。首先,您的初始化程序错过了self
的作业:
- (id)init
{
self = [super initWithWindowNibName:@"MyWindow"];
if(self)
{
[self loadWindow];
}
return self;
}
其次,您断言失败的可能原因是您没有将nib文件中文件所有者的window
出口连接到窗口对象。这意味着您的窗口控制器不知道窗口属性指向的对象。
如果您不了解如何在Interface Builder中设置插座,那么您有很多学习要做的事情,在进行任何其他操作之前应该先进行simple tutorial,因为了解插座和操作的工作方式是基本的能够用Cocoa编程。
答案 1 :(得分:-2)
不应该有
self = [super init];
中的
- (id)init {
[self initWithWindowNibName:@"MyWindow"];
[self loadWindow];
return self;
}