[英]Disable/enable NSMenu item
我使用 Interface Builder 创建了一个菜单栏应用程序,一个 NSMenu 对象(遵循本教程)。 菜单有两个项目:
启动突击队
停止突击队
单击菜单项时如何禁用/启用它们? 我已经设置禁用“自动启用项目”并且我可以在属性检查器中手动启用/禁用项目,但是当调用它们的函数时我怎样才能实现同样的事情呢?
单击“开始突击队”时,我希望禁用该项目并启用“停止突击队”。 当单击“停止突击队”时,反之亦然。
Swift 提供了setEnabled属性,可以在您尝试启用或禁用的 NSMenuItem 上使用。
您可以执行以下操作:
@IBOutlet weak var startMenuItem: NSMenuItem!
startMenuItem.isEnabled = false or true
您可以尝试以下代码:
let menu = NSMenu();
menu.autoenablesItems = false
正如其他人所说, NSMenuItem
有一个isEnabled
属性。 还需要在 Xcode 的属性检查器中或通过代码取消选中该菜单或子菜单的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
}
代码未经测试。
例如声明一个 BOOL 值
BOOL isActive
if(isActive)
{
//show menu
}
else
{
//hide your menu
}
当您的视图关闭时也使 BOOL 为真
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.