4

我的应用程序菜单有问题。我希望菜单中的一些项目根据某些BOOL变量显示为灰色。

另外,我希望我的一些菜单项根据某些BOOL变量获取名称,从而根据菜单项名称执行不同的功能。这可能吗?与使用 Interface Builder 一样,您可以将菜单项链接到一个 IBAction 方法。请告诉我如何做到这一点。

谢谢

4

3 回答 3

4

请参阅NSMenuValidation 协议

您实现 -validateMenuItem:,它用于确定是否应启用或禁用菜单项。在弹出菜单之前为每个菜单项调用它。

于 2009-09-10T23:59:10.793 回答
1

是的。您可以通过编程设置菜单项的启用状态及其标题;请参阅 NSMenuItem 文档。NSLocalizedString获取标题格式时记得使用。

于 2009-09-11T03:32:07.373 回答
0

对于第二个问题;您不需要使用 Interface Builder 来连接菜单项的目标/操作。

您可以使用如下代码:

NSMenuItem *menuItem; // Set this to your menu item.
// Set the target to an instance of a class which contains the action method.
[menuItem setTarget:targetClass]; 
// Set the action to the (IBAction) method to call.
[menuItem setAction:NSSelectorFromString(@"actionMethod")]; 
于 2009-09-11T09:42:34.173 回答