NSMenuItem没有启用?

use*_*064 8 xcode cocoa objective-c nsmenuitem

我有一个名为history的NSMenuItem,它位于一个名为菜单的NSMenu中.当我的程序启动时,历史记录没有子菜单,因此禁用它.然后在某些时候,我需要一个历史子菜单,所以我创建它,使它成为历史的子菜单.历史旁边出现一个箭头,告诉我子菜单在那里.但历史仍然是残疾人.我尝试过setEnabled但不起作用.请帮忙.这是我的代码:

这是我创建菜单和历史记录,因为您可以在菜单中看到NSMenuItem.

    menu = [[NSMenu alloc] initWithTitle:@"Menu"];
[[menu addItemWithTitle:@"History" action:nil keyEquivalent:@""] setTarget:self];
[[menu addItemWithTitle:@"Settings" action:@selector(loadSettings:) keyEquivalent:@""] setTarget:self];
[[menu addItemWithTitle:@"Quit" action:@selector(terminateApp:) keyEquivalent:@""] setTarget:self];
Run Code Online (Sandbox Code Playgroud)

此时,历史记录被禁用(灰色).然后在程序的某个地方,我需要有一个历史子菜单,所以:

        if (historyMenu == nil) {
        historyMenu = [[NSMenu alloc] initWithTitle:@"Lyrics history"];
        [menu setSubmenu:historyMenu forItem:[menu itemWithTitle:@"History"]];
    }
Run Code Online (Sandbox Code Playgroud)

我现在看到历史旁边的一个箭头,但它仍然是灰色的.

请帮助,我一直试图弄清楚最后2个小时.谢谢.

Jon*_*etz 8

您正在设置目标但是没有操作.尽量不设置目标.这可能会一直启用它,在这种情况下您可能必须手动启用或禁用菜单项.

以下是有关如何启用菜单项的文档.