Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa validateUserInterfaceItem和菜单项隐藏_Cocoa_Menu_Nsmenu - Fatal编程技术网

Cocoa validateUserInterfaceItem和菜单项隐藏

Cocoa validateUserInterfaceItem和菜单项隐藏,cocoa,menu,nsmenu,Cocoa,Menu,Nsmenu,使用validateUserInterfaceItem可以禁用/启用菜单项,但我需要类似的行为来隐藏菜单项,有什么提示吗?-(BOOL)validateNuItem:(NSMenuItem*)菜单项 有关详细信息,请参阅 更新: 如果validateNuItem:返回NO,则NSMenus不会隐藏NSMenuItems。相应的NSMenuItem被禁用(它告诉用户该功能存在,但当前不适用)。 中也建议了这种行为。(参见“命名菜单项”部分的第二段) 关于NSMenuItem的启用状态的另外两个注意

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

-(BOOL)validateNuItem:(NSMenuItem*)菜单项

有关详细信息,请参阅

更新:
如果
validateNuItem:
返回
NO
,则NSMenus不会隐藏NSMenuItems。相应的NSMenuItem被禁用(它告诉用户该功能存在,但当前不适用)。
中也建议了这种行为。(参见“命名菜单项”部分的第二段)

关于NSMenuItem的启用状态的另外两个注意事项:

  • setEnabled
    仅当主机菜单的
    autoenablesItems:
    设置为
    YES
  • validateNuItem:
    的默认实现似乎遍历响应程序链,以检查NSMenuItem的目标/操作是否可用
您可以使用-(BOOL)validateNuitem:删除不需要的菜单项,并在需要时插入


查看

在ValidateNuitem中调用setHidden没有隐藏菜单,我不明白你为什么要从其他地方调用setHidden?我在我的一个项目中使用了它(也用于上下文菜单),它在那里就像一个符咒。可能是一些琐碎的东西(插座没有连接?)你说得对,但我有一个上下文菜单,我只想显示有效的“上下文”项,而不是有十几个菜单项,只有几个启用