我有一个应用程序,可以从首选项窗口切换 NSStatusItem。首选项窗口有一个复选框“启用/禁用”,它调用 NSStatusItem 类中的“enabledStatusItem”和“disableStatusItem”方法。
这一切都工作正常,我的问题是向此 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,那有没有一个简单的解决方案呢?
也许你们中有一个人有想法?
预先感谢您的宝贵时间, 问候弗兰斯
最佳答案
该代码没问题,但存在菜单未保留的问题
assert(statusMenu);
关于objective-c - 在 Objective-C 中使用 NSMenu 切换 NSStatusItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13901387/