Cocoa validateUserInterfaceItem和菜单项隐藏

时间:2010-11-10 12:23:54

标签: cocoa menu nsmenu

使用validateUserInterfaceItem可以禁用/启用菜单项,但我需要一个类似的行为来隐藏菜单项,你有一些提示吗?

2 个答案:

答案 0 :(得分:2)

- (BOOL)validateMenuItem:(NSMenuItem *)menuItem

docs中的一些细节。

<强>更新
如果validateMenuItem:返回NO,NSMenus不会隐藏NSMenuItems。相应的NSMenuItem被禁用(它告诉用户功能在那里,但目前不适用) Apple's HIG中也建议使用此行为。 (参见“命名菜单项”部分的第二段)

关于NSMenuItem的enabled状态的另外两个注释:

  • setEnabled仅在托管NSMenu的autoenablesItems:设置为YES时才有效
  • validateMenuItem:的默认实现似乎遍历响应者链以检查NSMenuItem的目标/操作是否可用。

答案 1 :(得分:0)

您可以使用 - (BOOL)validateMenuItem:删除不需要的菜单项,并在需要时插入它。

请参阅Menu documentation