我有一个 NSWindowController 子类,BBPreferencesWindowController
@implementation BBPreferencesWindowController
- (NSString *)windowNibName
{
return @"PreferencesWindow";
}
...
我的 AppDelegate 中的一个函数可以通过这个控制器打开“PreferencesWindow.xib”中的窗口。
这个函数是从一个 NSMenuItem 调用的,它附加到系统菜单栏中 NSStatusItem 项下的 NSMenu。
@property (strong) BBPreferencesWindowController *preferencesWindow;
...
- (void)openPreferences
{
if (self.preferencesWindow == nil)
{
self.preferencesWindow = [[BBPreferencesWindowController alloc] init];
}
[self.preferencesWindow showWindow:self];
NSLog(@"%@", self.preferencesWindow.window.isVisible ? @"YES" : @"NO");
}
第一次单击 NSMenuItem 时窗口显示良好(尽管 NSLog 行记录“NO”),但是当我关闭窗口然后尝试通过再次单击 NSMenuItem 重新打开它时,窗口赢了不开。
我错过了什么?
谢谢!
编辑:
BBPreferencesWindowController
没有自定义的 init 方法。它确实有一个自定义awakeFromNib
(第一次被调用)
- (void)awakeFromNib
{
[super awakeFromNib];
NSLog(@"Loaded!");
}