0

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

我想根据用户选择更改此菜单项的标题。如果用户没有选择任何东西,它应该是"Export All Things...",当用户选择了一些东西时,它应该是"Export Selected Things..."。当没有文档打开时,它应该只是读取"Export Things..."

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

4

1 回答 1

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;
}
于 2011-01-17T09:15:42.077 回答