将 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
最简单的方法,几乎不需要代码:
- 在您的应用委托上创建一个布尔值 属性(如果更合适,它可以在另一个对象上),并用“@objc”和 'dynamic' 标记它,如下所示:
@objc dynamic var foo: Bool = false
在 Interface Builder 中,单击您的菜单项,然后转到绑定检查器。将 'value' 绑定到 App Delegate,将 Controller Key 留空,并将 Model Key Path 设置为 属性 的名称(在本例中为 'foo')。
没有第三步
我创建了一个菜单栏应用程序,我希望当您单击其中一个菜单栏项目时,它会在关闭状态和打开状态(勾选和未勾选)之间切换,但我很难在代码中做到这一点.有没有人知道如何实现这一目标?
我可以看到我可以在属性检查器中设置它,但我想在按下它后将其更改为 On/Off。
谢谢 英里
简单的解决方案:创建一个 IBAction
@IBAction func toggleState(_ sender: NSMenuItem) {
sender.state = sender.state == .on ? .off : .on
}
将 NSMenuItem
连接到 IBAction
。如果响应控制器与 Application Scene
无关,请通过 First Responder
(红色立方体)
IBAction
最简单的方法,几乎不需要代码:
- 在您的应用委托上创建一个布尔值 属性(如果更合适,它可以在另一个对象上),并用“@objc”和 'dynamic' 标记它,如下所示:
@objc dynamic var foo: Bool = false
在 Interface Builder 中,单击您的菜单项,然后转到绑定检查器。将 'value' 绑定到 App Delegate,将 Controller Key 留空,并将 Model Key Path 设置为 属性 的名称(在本例中为 'foo')。
没有第三步