gpt4 book ai didi

objective-c - 在 Objective-C 中使用 NSMenu 切换 NSStatusItem

转载 作者:行者123 更新时间:2023-12-03 17:13:32 28 4
gpt4 key购买 nike

我有一个应用程序,可以从首选项窗口切换 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com