【发布时间】:2017-09-01 17:23:18
【问题描述】:
我正在使用 Swift 编写一个针对 macOS Sierra 的应用程序。
我有一个 NSMenuItem 想要灰显(因此用户甚至无法选择它)。
我已在 Storyboard 中将其父菜单 AutoEnableItems 设置为 FALSE,并通过登录我的代码验证它仍然为 false。
当我将 NSMenuItem 的 isEnabled 属性设置为 false 时,当我选择该菜单项时,不会调用与该菜单项关联的操作(这很好),但菜单仍然可选择。
我想要的是它是灰色的,显然用户无法选择。
【问题讨论】:
-
你想让它变灰。从哪里?视图控制器?一个窗口控制器?应用代理?单身?
-
@ElTomato - 它来自我的 AppDelegate,在通知回调的上下文中(NotificationCenter 的观察者):我希望菜单根据触发通知的新值启用/禁用跨度>
-
这不是我要找的答案。谁在发布通知以及如何发布?
-
@ElTomato 组件 A 调用 NotificationCenter.default.post() 以响应其属性之一(布尔值)的变化。这是在附加到该属性的 didSet() 函数中完成的。我的 AppDelegate 是该通知的观察者,它的回调被调用。在回调中,我检查布尔值并根据其值设置 MenuItem:如果为真,我希望菜单启用和黑色(因此可选择),如果为假,我希望菜单禁用和变灰(不可选择)
标签: swift macos menu nsmenu nsmenuitem