2016-02-26 3 views
0

Заранее спасибо за помощь.NSMenu - @selector (doSomething) ничего не делает, когда я нажимаю на него

ПРОБЛЕМА: «@selector (йоЗотеЬЫпд)» НЕ Назвав '- (Недействительными) йоЗотеЬЫпд: (идентификатор) отправителя МЕТОД

Я пытаюсь получить элемент в строке состояния для вызова метода 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 вы благодарите людей, голосуя ответы и комментарии вверх или вниз и/или отмечая ответ, как «отвечает на вопрос». –