将 NSMenuItem 的状态设置为 On

Set state of NSMenuItem to On

我创建了一个菜单栏应用程序,我希望当您单击其中一个菜单栏项目时,它会在关闭状态和打开状态(勾选和未勾选)之间切换,但我很难在代码中做到这一点.有没有人知道如何实现这一目标?

我可以看到我可以在属性检查器中设置它,但我想在按下它后将其更改为 On/Off。

谢谢 英里

简单的解决方案:创建一个 IBAction

@IBAction func toggleState(_ sender: NSMenuItem) {
    sender.state = sender.state == .on ? .off : .on
}

NSMenuItem 连接到 IBAction。如果响应控制器与 Application Scene 无关,请通过 First Responder(红色立方体)

连接 IBAction

最简单的方法,几乎​​不需要代码:

  1. 在您的应用委托上创建一个布尔值 属性(如果更合适,它可以在另一个对象上),并用“@objc”和 'dynamic' 标记它,如下所示:

@objc dynamic var foo: Bool = false

  1. 在 Interface Builder 中,单击您的菜单项,然后转到绑定检查器。将 'value' 绑定到 App Delegate,将 Controller Key 留空,并将 Model Key Path 设置为 属性 的名称(在本例中为 'foo')。

  2. 没有第三步