【发布时间】:2016-06-21 18:55:17
【问题描述】:
我能够使用以下代码以编程方式创建菜单项。
primaryMenu.addItem(NSMenuItem(title: "MenuTitle", action: nil, keyEquivalent: ""))
我希望能够从此菜单项更新标题。当我使用 Interface Building 手动创建菜单时,我已经能够非常轻松地做到这一点。
我无法识别菜单项。
【问题讨论】:
标签: swift nsmenuitem
我能够使用以下代码以编程方式创建菜单项。
primaryMenu.addItem(NSMenuItem(title: "MenuTitle", action: nil, keyEquivalent: ""))
我希望能够从此菜单项更新标题。当我使用 Interface Building 手动创建菜单时,我已经能够非常轻松地做到这一点。
我无法识别菜单项。
【问题讨论】:
标签: swift nsmenuitem
存储对您的NSMenuItem 的引用(例如在实例变量中),并随时在其上设置标题:
let myMenu = NSMenuItem(title: "MenuTitle", action: nil, keyEquivalent: "")
primaryMenu.addItem(myMenu)
//somewhere else:
myMenu.title = "xyz"
【讨论】:
只需在类的顶层创建一个惰性实例化变量
lazy var mySpecialMenuItem : NSMenuItem = {
return NSMenuItem(title: "MenuTitle", action: nil, keyEquivalent: "")
}()
并将菜单项分配给变量
primaryMenu.addItem(mySpecialMenuItem)
现在您可以更改标题
mySpecialMenuItem.title = "Something Else"
惰性实例化变量的好处是它在第一次被访问之前不会被初始化,您可以避免可选或隐式未包装的可选。
【讨论】: