【问题标题】:Set state of NSMenuItem to On将 NSMenuItem 的状态设置为 On
【发布时间】:2017-08-01 17:01:12
【问题描述】:

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

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

谢谢 里程

【问题讨论】:

    标签: swift swift3 nsmenuitem


    【解决方案1】:

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

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

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

    【讨论】:

    • 正是我想要的,太棒了,谢谢!我假设当每个状态被切换时,我可以调用不同的函数来对每个切换状态进行操作?
    • 您可以在该行之后调用不同的函数来设置状态。实际上,如果菜单项与场景/控制器直接相关,Charles 的回答要好得多——因此可以绑定值。在这种情况下,添加 didSet 观察者并在其中调用您的 不同函数
    【解决方案2】:

    几乎没有代码的最简单和最简单的方法:

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

    @objc dynamic var foo: Bool = false

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

    2. 没有第三步。

    【讨论】:

    • 规则 6。没有...规则 6!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-02
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    • 2017-08-17
    相关资源
    最近更新 更多