2

我有一个_PreferencesWindowController使用以下实现调用的 NSWindowController 子类 -

@synthesize window;

- (id)init {

 self = [super initWithWindowNibName:@"PreferencesWindow"];
 if (!self) return nil;

 return self;
}

我尝试_PreferencesWindowController使用以下代码显示窗口 -

_preferencesWindowController = [[_PreferencesWindowController alloc] init];
[_preferencesWindowController showWindow:nil];

它什么也不做,我检查_preferencesWindowController.window的是nil调试器。

loadView但是,如果我调用_preferencesWindowController窗口可以加载并且是可见的;_preferencesWindowController.window不再是零值 -

[_preferencesWindowController loadWindow];

我查看了 Apple 在 NSWindowController 上的文档,它明确表示“您永远不应该直接调用loadWindow”,而showWindow:应该使用它。我想知道我可能错过了什么导致我看到的上述行为。

4

1 回答 1

3

好的,我通过查看NSWindowController头文件解决了这个问题。

问题出在我的 _PreferencesWindowController 头文件中 -

@interface _PreferencesWindowController : NSWindowController <NSToolbarDelegate> {

    NSWindow *window;

}

@property (assign) IBOutlet NSWindow *window;

@end

通过删除 @property 声明并将NSWindow *windowivar 更改为IBOutlet NSWindow *windowshowWindow:方法现在可以正常工作。

属性声明必须导致实现showWindow:方法中的未定义行为NSWindowController

于 2010-08-22T02:29:48.537 回答