NSMenuItem 更新标题

NSMenuItem updating title

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

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

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

我无法识别菜单项。

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

let myMenu = NSMenuItem(title: "MenuTitle", action: nil, keyEquivalent: "")

primaryMenu.addItem(myMenu)

//somewhere else:
myMenu.title = "xyz"

只需在 class

的顶层创建一个惰性实例化变量
lazy var mySpecialMenuItem : NSMenuItem = {
   return NSMenuItem(title: "MenuTitle", action: nil, keyEquivalent: "")
}()

并将菜单项分配给变量

primaryMenu.addItem(mySpecialMenuItem)

现在您可以更改标题

mySpecialMenuItem.title = "Something Else"

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