NSStatusItem附加了NSMenu,NSMenu的其中一个按钮打开了NSWindow。只要单击其中一个按钮,窗口就会按预期打开并正常工作,但会打开另一个NSStatusItem显示。
NSStatusItem是一个时钟,所以我可以看到它正在正确更新。但是,克隆的NSStatusItem没有自己的菜单。如果我按下使窗口更多次的按钮,则弹出更多克隆版本的NSStatusItem。
除此之外一切正常。
这不是一大堆信息,但我没想到任何其他可能对你有帮助的信息。我很乐意提供更多信息或尝试一些。
编辑:每次单击该按钮时,都会以某种方式调用awakeFromNib,这就是为什么另一个半工作的NSStatusItem发生的原因。编辑:临时解决方法是将awakeFromNib方法放在dispatch_once
中。
编辑:添加按下单击按钮时触发的方法,如@zpasternack
所示- (IBAction)preferences:(id)sender {
self.windowController = [[NSWindowController alloc] initWithWindowNibName:@"PreferencesWindow"];
[[self windowController] showWindow:self];
}
答案 0 :(得分:0)
NSSTatusItem是否包含在PreferencesWindow笔尖中?这可能会解释它,因为每次单击按钮时都会加载笔尖。
另外,每次单击按钮时是否需要重新创建该窗口?也许你只能第一次这样做?
- (IBAction)preferences:(id)sender {
if( self.windowController == nil ) {
self.windowController = [[NSWindowController alloc] initWithWindowNibName:@"PreferencesWindow"];
}
[[self windowController] showWindow:self];
}