一个 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];
}