【问题标题】:Rebuild NSMenuItems in StatusBar在状态栏中重建 NSMenuItems
【发布时间】:2013-07-20 23:56:07
【问题描述】:

我正在尝试在状态栏应用中拥有动态数量的 NSMenuItem。现在我正在阅读awakeFromNib 的列表。但这只会发生一次。
在应用程序运行时,我需要做什么来重建我的 NSMenuItems?
它应该发生在-(void)menuNeedsUpdate:(NSMenu *)menu 之类的地方吗?
有人可以给我一个正确的方向吗?

【问题讨论】:

    标签: cocoa dynamic nsmenuitem nsmenu


    【解决方案1】:

    尝试在头文件(.h 文件)上设置NSMenuDelegate,如下所示:

    #import <Cocoa/Cocoa.h>
    
    @interface AppDelegate : NSObject <NSApplicationDelegate,NSMenuDelegate>{
    }
    

    (或在需要调用选择器的类的头文件中)

    【讨论】:

    • 我认为有几个地方出了问题。我必须添加 NSMenuDelegate 并且我没有引用某些网点。我通过窥探其他人的代码来修复它。 :) 还是谢谢
    【解决方案2】:

    使用– addItem:– removeItem: 方法。

    NSMenuItem *test = [[NSMenuItem alloc] initWithTitle:@"test" action:@selector(test) keyEquivalent:@"a"];
    [[StatusItem menu]  addItem:test];
    

    【讨论】:

    • 嗨,我已经以这种方式从列表中添加项目。我的问题是在更改该列表时重建菜单。我正在尝试在- (void)menuNeedsUpdate:(NSMenu *)menu { 中执行某些操作,但它没有被调用。你可以在这里查看我的代码github.com/fabiantheblind/Shortcuts/blob/master/Shortcuts/…
    • [[StatusItem 菜单] setDelegate:self];
    • 对不起,我是新手。我不明白你的提示
    • 设置状态菜单委托。 thn - (void)menuNeedsUpdate:(NSMenu *)menu 方法将被调用。
    • 嗯。这给了我:在“NSStatusItem *”类型的对象上找不到属性“委托”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多