2016-02-26 26 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上,您可以通過向上或向下投票回答和評論並/或將答案標記爲「回答問題」來感謝他人。 –

相關問題