NSMenu - @selector(doSomething)当我点击它时什么都不做



提前感谢您的帮助。

问题:"@selector(doSomething)"未调用"-(void)doSomething:(id)SENDER"方法

我正在尝试让状态栏中的项目调用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!");
}

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

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

相关内容

最新更新