我相信我正确地遵循了这个例子。 (https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/StatusBar/Tasks/creatingitems.html)
@interface AppDelegate : NSObject <NSApplicationDelegate> {
NSStatusItem *testItem;
NSMenu *testMenu;
}
...
@implementation AppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
testMenu = [[NSMenu alloc] init];
[testMenu addItemWithTitle:@"An Item" action:nil keyEquivalent:nil];
[testMenu addItemWithTitle:@"Another Item" action:nil keyEquivalent:nil];
NSStatusBar *bar = [NSStatusBar systemStatusBar];
testItem = [[NSStatusItem alloc] init];
testItem = [bar statusItemWithLength:NSVariableStatusItemLength];
[testItem setTitle: @"X"];
[testItem setHighlightMode:YES];
[testItem setMenu:testMenu];
[testItem setEnabled:YES];
}
我建立并运行。没有新的状态栏项目可供查看。为什么不?如果我是一个无知的新手,请原谅我。我假设我忽略了一些基本的东西。
答案 0 :(得分:5)
keyEquivalent
的{{1}}不能为零。当你这样做时,会发生异常,所以它永远不会超过这些行。用这样的东西改变这两行:
addItemWithTitle
现在一切正常。您可以通过查看调试器的输出来解决这些问题。在这种情况下,给出正确线索的输出是“无效参数不满足:charCode!= nil”。
您可以从NSMenu's
documentation获得更多信息:
一个字符串,用于标识要用作菜单项的等效键的键。如果您不希望菜单项具有等效键,则keyEquiv应为空字符串(@“”)而不是nil。
答案 1 :(得分:0)
我知道这是基本的东西。应该是我检查过的第一件事。 - (void)applicationDidFinishLaunching:(NSNotification *)aNotification
没有被调用。现在修好了。