我已经使用Interface Builder创建了一个菜单栏应用程序,一个NSMenu对象(在this教程之后)。菜单有两个项目:
启动突击队
停止突击队
如何在点击菜单项时禁用/启用菜单项?我已设置已停用"自动启用项目"我可以手动启用/禁用“属性”检查器中的项目,但是如何在调用它们的函数时实现相同的功能?
当"开始突击队"单击我希望该项目禁用和"停止突击队"启用。而另一种方式是"停止突击队"点击。
答案 0 :(得分:1)
Swift提供了 setEnabled 属性,可以在您尝试启用或禁用的NSMenuItem上使用。
您可以执行以下操作:
@IBOutlet weak var startMenuItem: NSMenuItem!
startMenuItem.isEnabled = false or true
答案 1 :(得分:0)
声明实例的BOOL值
BOOL isActive
if(isActive)
{
//show menu
}
else
{
//hide your menu
}
当您的视图解除时,也会使BOOL成立
答案 2 :(得分:0)
您可以尝试以下代码:
let menu = NSMenu();
menu.autoenablesItems = false
答案 3 :(得分:0)
正如其他人所说,isEnabled
有一个 NSMenuItem
属性。还需要在 Xcode 的 Attributes Inspector 中或通过代码取消选中该菜单或子菜单的 Auto Enables Items
,以使设置生效。
要使其在选择时发生变化,请在调用菜单项的 IBAction
中(可能在您的 NSWindowController
中)执行如下操作:
@IBAction private func myMenuAction(sender: NSMenuItem) {
sender.isEnabled = false
}
之后您将无法再选择菜单项。我假设您在其他地方重新启用它:
if let appDelegate = NSApplication.shared.delegate as? AppDelegate {
appDelegate.myMenuItem.isEnabled = true
}
代码未经测试。