【问题标题】:Cocoa validateUserInterfaceItem and menu item hidingCocoa validateUserInterfaceItem 和菜单项隐藏
【发布时间】:2010-11-10 12:23:53
【问题描述】:

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

【问题讨论】:

    标签: cocoa menu nsmenu


    【解决方案1】:

    - (BOOL)validateMenuItem:(NSMenuItem *)menuItem

    docs中的一些细节。

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

    关于 NSMenuItem 的enabled 状态的另外两个说明:

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

    【讨论】:

    • 你说得对,但我有一个上下文菜单,我只想显示有效的“上下文”项,而不是有十几个菜单项,并且只启用了几个
    【解决方案2】:

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

    Menu documentation

    【讨论】:

    • 在 validateMenuItem 中调用 setHidden 并没有隐藏菜单,我不明白为什么
    • 您是否尝试从其他地方调用 setHidden?我在我的一个项目中使用它(也用于上下文菜单),它在那里就像一个魅力。也许一些微不足道的事情(插座未连接?)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-28
    • 2020-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多