我有一个从首选项窗口切换 NSStatusItem 的应用程序。首选项窗口有一个复选框“启用/禁用”,它调用 NSStatusItem 类中的“启用状态项目”和“禁用状态项目”方法。
这一切都很好,我的问题是向这个 NSStatusItem 添加一个菜单。NSStatusItem 类中的代码如下所示:
-(void)enableStatusItem
{
//get icon
theIcon = [NSImage imageNamed:@"test.png"];
//create item
statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength];
[statusItem setImage:theIcon];
[statusItem setHighlightMode:YES];
[statusItem setMenu:statusMenu];
}
-(void)disableStatusItem
{
[[NSStatusBar systemStatusBar] removeStatusItem:statusItem];
}
一切正常,除了 setMenu。起初我在 awakeFromNib 中加载了 StatusItem,然后 setMenu 起作用了。但是当首选项复选框“关闭”时,StatusItem 必须保持关闭,所以我无法再将它加载到 awakeFromNib 中。
我怀疑 setMenu 没有加载,因为它不在 awakeFromNib 中,但是在 awakeFromNib 之后调用了“enableStatusItem”,所以在 awakeFromNib 中还没有要添加菜单的 statusItem。而且我无法“预加载”statusItem,因为它是使用“[[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength];”创建的
到目前为止,我已经尝试了很多,甚至制作了一个测试应用程序,我在其中一个接一个地添加了每一段代码,所以我可以分解它。但到目前为止没有任何成功。
我觉得因为就是这么简单的东西,只有一个小NSMenu,那难道没有简单的解决方案吗?
也许你们中的一个人有一个想法?
提前感谢您的时间,问候弗兰斯