根据用户选择更改NSMenuItem

Jak*_*ger 0 cocoa menuitem document-based

我正在研究基于Cocoa文档的应用程序.我在文件菜单中有一个名为"Export Things ..."的菜单项.此菜单项连接到第一个响应者,并在MyDocument中调用选择器.到现在为止还挺好.

我想根据用户选择更改此菜单项的标题.如果用户没有选择任何内容,则应显示"导出所有内容...",当用户选择了某些内容时,应显示"导出所选内容...".当没有文档打开时,它应该只是"Export Things ...".

我应该在何时何地更改此菜单项?我想我可以使用setTitle改变菜单项:但是如何获得对NSMenuItem的引用?

omz*_*omz 5

您可以-validateMenuItem:在响应器类中实现处理菜单项的操作.它应该返回一个BOOL(指示该项是否已启用),但您还可以获得对NSMenuItem可用于更改标题的参数的引用.

要确定您正在处理哪个菜单项,您应该检查它action,例如

- (BOOL)validateMenuItem:(NSMenuItem *)item {
  if ([item action] == @selector(export:)) {
    if (hasSelection) {
      [item setTitle:NSLocalizedString(@"Export Selected Things",nil)];
    } else {
      [item setTitle:NSLocalizedString(@"Export All Things",nil)];
    }
  }
  return YES;
}
Run Code Online (Sandbox Code Playgroud)