我有一个 NSWindowController 的子类,我用它从笔尖加载一个窗口并将其显示在屏幕上。下面是我想显示窗口时调用的代码。在 10.6 上调用 showCustomWindow 时会显示窗口,但在 10.5 上必须调用此方法两次才能显示窗口。
-(IBAction)showCustomWindow:(id)sender
{
if(!windowController){
windowController = [[MyWindowController alloc] initWithWindowNibName:@"MyWindow"];
}
[windowController showWindow:self];
}
该窗口已选中“启动时可见”,取消选中它似乎没有任何区别。
编辑:我意识到我遇到的问题与我的 NSWindowController 或 showWindow 无关。我已经正确设置了。然而,我确实发现并非所有类都实现了 awakeFromNib。在我的一个 NSView 子类中(在我试图加载的 nib 中),我正在调用 [super awakeFromNib] 这给了我一个“不响应选择器”(但仅在 10.5 上,这很奇怪)。所以,我本可以取出 [super awakeFromNib] 但我选择了希望更强大的:
if([NSView instancesRespondToSelector:@selector(awakeFromNib)]) {
[super awakeFromNib];
}
这使我的笔尖可以正常加载,并且 showWindow 可以正常工作。