【问题标题】:NSMenuItem updating titleNSMenuItem 更新标题
【发布时间】:2016-06-21 18:55:17
【问题描述】:

我能够使用以下代码以编程方式创建菜单项。

primaryMenu.addItem(NSMenuItem(title: "MenuTitle", action: nil, keyEquivalent: ""))

我希望能够从此菜单项更新标题。当我使用 Interface Building 手动创建菜单时,我已经能够非常轻松地做到这一点。

我无法识别菜单项。

【问题讨论】:

    标签: swift nsmenuitem


    【解决方案1】:

    存储对您的NSMenuItem 的引用(例如在实例变量中),并随时在其上设置标题:

    let myMenu = NSMenuItem(title: "MenuTitle", action: nil, keyEquivalent: "")
    
    primaryMenu.addItem(myMenu)
    
    //somewhere else:
    myMenu.title = "xyz"
    

    【讨论】:

    • 但是其他地方必须在同一个范围内,这没有多大意义。
    • 添加说明
    【解决方案2】:

    只需在类的顶层创建一个惰性实例化变量

    lazy var mySpecialMenuItem : NSMenuItem = {
       return NSMenuItem(title: "MenuTitle", action: nil, keyEquivalent: "")
    }()
    

    并将菜单项分配给变量

    primaryMenu.addItem(mySpecialMenuItem)
    

    现在您可以更改标题

    mySpecialMenuItem.title = "Something Else"
    

    惰性实例化变量的好处是它在第一次被访问之前不会被初始化,您可以避免可选或隐式未包装的可选。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-08
      • 1970-01-01
      • 2015-01-15
      • 2023-03-10
      • 2011-09-12
      相关资源
      最近更新 更多