2016-06-21 9 views
1

Ich bin in der Lage, Menüelemente mit dem folgenden Code programmgesteuert zu erstellen.NSMenuItem Titel aktualisieren

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

Ich möchte den Titel aus diesem Menüpunkt aktualisieren können. Ich habe es sehr leicht gemacht, wenn ich das Menü manuell mit Interface Building erstellt habe.

Ich habe keine Möglichkeit, den Menüpunkt zu identifizieren.

Antwort

1

Shop ein Verweis auf Ihre NSMenuItem (wie in einer Instanzvariablen), und legen Sie den Titel auf sie, wann immer Sie wollen:

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

primaryMenu.addItem(myMenu) 

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

Allerdings * irgendwo anders * muss im selben Umfang sein, was nicht viel Sinn macht. – vadian

+0

Zusätzliche Erläuterung hinzugefügt – Alexander

1

einfach eine faule instanziiert Variable auf der obersten Ebene der Klasse erstellen

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

und weisen Sie den Menüpunkt auf die Variable

primaryMenu.addItem(mySpecialMenuItem) 

Nun können Sie den Titel nicht initialisiert ändern

mySpecialMenuItem.title = "Something Else" 

Der Nutzen eines faulen instanziiert Variable ist, wird es werden, bis es zum ersten Mal zugegriffen wird, und Sie können eine optionale oder implizit ausgepackten optional vermeiden.

Verwandte Themen