【发布时间】:2013-12-13 07:24:25
【问题描述】:
一个 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];
}
【问题讨论】:
-
您能否发布在单击打开 NSWindow 的按钮时运行的代码?
-
你去@zpasternack。此外,
windowController在标题中声明,如下所示@property (strong) NSWindowController *windowController;
标签: macos cocoa duplicates nsstatusitem awakefromnib