将NSMenuItems与Actions&反之亦然

时间:2012-03-23 03:15:17

标签: objective-c cocoa action nsmenuitem

让我解释一下我的意思:

假设我们有一个包含多个项目的菜单(假设它是一个...选项集合,其中只有一个可以随时启用)。

建议的实现是什么(绑定?我不知道......),以便我可以满足以下场景:

  • 用户单击菜单上的某个项目,这会在某个控制器上触发操作doSomething。此外,当独立调用操作doSomething时,也应检查相应的菜单项。

  • 我们有一个相同的菜单(在其他地方),其选项与初始菜单相同。用户点击菜单A的项目,在菜单B上检查相同的项目,执行动作doSomething。这应该以任何动作顺序起作用(A-> B->动作,B-> A->动作,动作 - > A-> B)

2 个答案:

答案 0 :(得分:1)

我希望每个菜单项都调用自己的action方法,让每个action方法将一个实例变量设置为一个值,具体取决于它是哪一个,它们实现NSMenuValidation非正式协议的方法,以及我们更新菜单项目显示其复选标记以及通常的启用/禁用。

答案 1 :(得分:1)

-doSomething:应设置BOOL变量,指示是否应检查菜单项。

使用NSUserInterfaceValidations协议,正如我在previous question的回答中所解释的那样。

-validateUserInterfaceItem:中,获取BOOL的值,然后:

[(NSMenuItem*)anItem setState:(boolValue ? NSOnState : NSOffState)];