【问题标题】:How to access NSStatusBar from another view?如何从另一个视图访问 NSStatusBar?
【发布时间】:2015-07-02 22:43:38
【问题描述】:

我有状态栏图标,我正在尝试添加右键菜单。

   statusItem = [[[NSStatusBar systemStatusBar] statusItemWithLength:NSSquareStatusItemLength] retain];       
   MyView *view = [MyView new];
   view.image = statusImage;
   [statusItem setView:view];
   [statusItem setToolTip:@"Program Name"];
   view.target = self;
   view.action = @selector(openLeftWindow:);
   view.rightAction = @selector(openRightWindow:);

在其他视图中,如果使用左键或右键按下NSStatusBar,我可以得到。在右键单击事件中,我尝试添加NSMenu。 我想我可以像这样添加菜单:

[statusItem setMenu:theMenu];

但我不能,因为我没有 statusItem。我对此很陌生,所以也许这甚至不是正确的方法。

编辑:不知何故,我设法使菜单显示。我不确定这样做是否正确,但我所做的只是将 statusItem 分配给我的自定义视图,如下所示:

view.statusItem = statusItem;

将此添加到自定义视图头文件中:

@property NSStatusItem *statusItem;

并像这样显示菜单:

[self.statusItem popUpStatusItemMenu:theMenu];

【问题讨论】:

    标签: objective-c nsstatusbar


    【解决方案1】:

    我不太确定您的问题是什么,但在过去,您可以在 `NSStatusItem 实例上调用 -popStatusItemMenu 以显示菜单(尤其是在诸如 openRightWindow 之类的视图操作中:):https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSStatusItem_Class/index.html#//apple_ref/occ/instm/NSStatusItem/popUpStatusItemMenu

    如果在访问您的状态项实例时遇到问题,我建议您将该属性添加到 MyView 以便您可以引用它。

    但是,从 10.10 开始,您应该使用 NSStatusBarButton,我似乎无法在网上找到相关文档。您可能需要检查头文件。

    【讨论】:

      猜你喜欢
      • 2011-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多