2016-02-26 60 views
0

在此先感谢您的帮助。NSMenu - @selector(doSomething)当我点击它时没有做任何事

问题:“@selector(doSomething的)”不是调用“ - (无效)DoSomething的:(ID)发送”的方法

我试图让在状态栏中调用DoSomething的方法的项目但是当我点击它时,似乎没有任何事情发生。

我在做什么错?

AppDelegate.m

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 
{ 
    sync_control *controlObject = [[sync_control alloc] init]; 
    [controlObject startSyncApp]; 
} 

SyncControl.m

NSStatusBar *syncStatusBar; 
    NSStatusItem *syncStatusItem; 

- (void) startSyncApp 
{ 
    syncStatusBar = [NSStatusBar systemStatusBar]; 
    syncStatusItem = [syncStatusBar statusItemWithLength:NSSquareStatusItemLength]; 

    NSImage *statusItemImage = [NSImage imageNamed:@"1.png"]; 
    statusItemImage.template = YES; 
    statusItemImage.size = NSMakeSize(18.0,18.0); 

    [syncStatusItem setImage:statusItemImage]; 
    [syncStatusItem setHighlightMode:YES]; 

    [syncStatusItem setMenu:[self waitingState:Nil]]; 
} 


- (NSMenu *)waitingState:(id)sender 
{ 
    NSMenu *localMenu; 

    //Create the NSMenu 
    localMenu = [[NSMenu alloc] initWithTitle:@"Sync"]; 
    [localMenu setAutoenablesItems:NO]; 
    [localMenu insertItemWithTitle:@"Do something now..." action:@selector(doSomething:) keyEquivalent:@"" atIndex:1]; 

    return localMenu; 
} 


- (void)doSomething:(id)sender 
{ 
    NSLog(@"It works!"); 
} 
+0

仔细看看你试图添加到NSMenuItem。 –

+0

感谢您的反馈。 – user1843298

回答

0

问题可能是菜单项有一个动作选择,但没有目标。试试这个:

NSMenuItem *someItem = [localMenu insertItemWithTitle:@"Do something now..." action:@selector(doSomething:) keyEquivalent:@"" atIndex:0]; 
[someItem setTarget: self]; 
+0

感谢您的反馈。 – user1843298

+0

在StackOverflow上,您可以通过向上或向下投票回答和评论并/或将答案标记为“回答问题”来感谢他人。 –

相关问题