我已经创建了一个菜单栏应用程序,我希望当您点击菜单栏项目之一时,它可以在关闭状态和打开状态之间切换(打勾和未打勾),但我很努力在代码中执行此操作。有没有人有关于如何实现这一目标的任何想法?将NSMenuItem的状态设置为开
我可以看到,我可以将它设置在属性检查器中,但是我想将其更改为打开/关闭,一旦它被按下。
感谢 万里
我已经创建了一个菜单栏应用程序,我希望当您点击菜单栏项目之一时,它可以在关闭状态和打开状态之间切换(打勾和未打勾),但我很努力在代码中执行此操作。有没有人有关于如何实现这一目标的任何想法?将NSMenuItem的状态设置为开
我可以看到,我可以将它设置在属性检查器中,但是我想将其更改为打开/关闭,一旦它被按下。
感谢 万里
简单的解决方案:创建一个IBAction
@IBAction func toggleState(_ sender: NSMenuItem) {
sender.state = sender.state == NSOnState ? NSOffState : NSOnState
}
的NSMenuItem
连接到IBAction
。如果响应控制器不相关的Application Scene
,连接IBAction
通过First Responder
(红色立方体)
简单,几乎没有代码来做到这一点最简单的方法:
@objc dynamic var foo: Bool = false
在Interface Builder中,单击您的菜单项,然后转到绑定检查器。将“值”绑定到App Delegate,将Controller Key留空,并将Model Key Path设置为属性的名称(本例中为'foo')。
没有第三步。
正是我在寻找惊人的,谢谢!我假设当每个状态切换时,我可以调用一个不同的函数来对每个切换状态进行操作? –
您可以在线后设置状态,然后调用*不同功能。事实上,如果菜单项与场景/控制器直接相关,Charles的答案会更好 - 因此可以限制值。在这种情况下,添加'didSet'观察者并在那里调用你的*不同的函数*。 – vadian