Oli*_*ver 3 cocoa objective-c nsstatusitem
我相信我正确地遵循了这个例子.(https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/StatusBar/Tasks/creatingitems.html)
@interface AppDelegate : NSObject <NSApplicationDelegate> {
NSStatusItem *testItem;
NSMenu *testMenu;
}
Run Code Online (Sandbox Code Playgroud)
...
@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];
}
Run Code Online (Sandbox Code Playgroud)
我建立并运行.没有新的状态栏项目可供查看.为什么不?如果我是一个无知的新手,请原谅我.我认为我忽略了一些基本的东西.
keyEquivalent因为addItemWithTitle不能为零.当你这样做时,会发生异常,所以它永远不会超过这些行.用这样的东西改变这两行:
[testMenu addItemWithTitle:@"An Item" action:nil keyEquivalent:@"a"];
[testMenu addItemWithTitle:@"Another Item" action:nil keyEquivalent:@"i"];
Run Code Online (Sandbox Code Playgroud)
现在一切正常.您可以通过查看调试器的输出来解决这些问题.在这种情况下,给出正确线索的输出是"无效参数不满足:charCode!= nil".
您可以从NSMenu's文档中获得更多:
一个字符串,标识用作菜单项的等效键的键.如果您不希望菜单项具有等效键,则keyEquiv应为空字符串(@"")而不是nil.
| 归档时间: |
|
| 查看次数: |
1073 次 |
| 最近记录: |