繁体   English   中英

禁用/启用 NSMenu 项

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM