使用MenuBar Icon的简单Cocoa应用程序.如何:?

Zrb*_*529 15 macos xcode cocoa

我正在尝试制作一个非常简单的Cocoa应用程序.我有三个窗口,上面有三条消息,这就是它的全部内容.我想要做的是这样的:

用户运行应用程序,应用程序图标出现在菜单栏中,这就是所有发生的事情,没有菜单和停靠图标

然后,用户可以单击MenuBar图标并有一个下拉列表,并从三个可用消息中进行选择.

我知道这是无用的,但是这是字面上我的第一个应用程序,我无法弄清楚如何让NSStatusItem正常工作...

我环顾四周,发现了一些教程,但我似乎无法跟随它们......有什么帮助吗?

Eim*_*tas 19

  1. 关于"无停靠图标" - LSUIElement在Info.plist文件中添加布尔条目并将其设置为true.这也不会在应用切换器UI(cmd + tab)中显示应用程序.
  2. 添加菜单栏图标与查看NSStatusBarNSStatusItem文档以及使用示例代码一样多:

.

// this one is taken from apple documentation
- (void)activateStatusMenu {
    NSStatusBar *bar = [NSStatusBar systemStatusBar];

    theItem = [bar statusItemWithLength:NSVariableStatusItemLength];
    [theItem retain];

    [theItem setTitle: NSLocalizedString(@"Tablet",@"")];
    [theItem setHighlightMode:YES];
    [theItem setMenu:theMenu];
}

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    [self activateStatusMenu];
}
Run Code Online (Sandbox Code Playgroud)

更新由于ARC不允许retain在代码中调用,因此我设法通过创建theItem作为__strong创建项的类的实例变量来解决问题.

  • 哇,太好了.我(因为我的句柄暗示)是一个完整的可可新手,我是从vb.net背景过来的,并且我正在使用objective-c语法进行一些努力.然而,我发现苹果可可文档比微软的vb文档更彻底,这些文档不是非常"用户友好".你的回答很有帮助,我感谢你的帮助. (2认同)