我正在开发基于Cocoa文档的应用程序。我在文件菜单中有一个名为“Export Things ...”的菜单项。此菜单项连接到第一个响应者,并在 MyDocument 中调用选择器。到目前为止一切都很好。
我想根据用户选择更改此菜单项的标题。如果用户没有选择任何内容,则应该读取“导出所有内容...”,当用户选择了一些内容时,应该读取“导出所选内容...”。当没有文档打开时,它应该只读“Export Things ...”。
我应该在何时何地更改此菜单项?我想我可以使用 setTitle:更改菜单项,但是如何获得对NSMenuItem的引用?
答案 0 :(得分: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;
}