2017-08-01 50 views
0

我已经创建了一个菜单栏应用程序,我希望当您点击菜单栏项目之一时,它可以在关闭状态和打开状态之间切换(打勾和未打勾),但我很努力在代码中执行此操作。有没有人有关于如何实现这一目标的任何想法?将NSMenuItem的状态设置为开

我可以看到,我可以将它设置在属性检查器中,但是我想将其更改为打开/关闭,一旦它被按下。

感谢 万里

回答

0

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

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

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

+0

正是我在寻找惊人的,谢谢!我假设当每个状态切换时,我可以调用一个不同的函数来对每个切换状态进行操作? –

+0

您可以在线后设置状态,然后调用*不同功能。事实上,如果菜单项与场景/控制器直接相关,Charles的答案会更好 - 因此可以限制值。在这种情况下,添加'didSet'观察者并在那里调用你的*不同的函数*。 – vadian

0

简单,几乎没有代码来做到这一点最简单的方法:

  1. 您的应用程序委托创建一个布尔属性(它可以是另一个对象,如果这是更合适的)中,用 '@objc' 和 '动态',像这样将其标记:

@objc dynamic var foo: Bool = false

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

  • 没有第三步。

  • 相关问题