2016-06-21 2 views
1

Я могу программно создавать элементы меню, используя следующий код.NSMenuItem update title

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

Я хочу, чтобы иметь возможность обновить название из этого пункта меню. Я смог сделать это очень легко, когда вручную создаю меню с помощью Interface Building.

У меня нет способа идентифицировать пункт меню.

ответ

1

Магазин ссылка на ваш NSMenuItem (например, в переменном экземпляре), и установить заголовок на него всякий раз, когда вы хотите:

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

primaryMenu.addItem(myMenu) 

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

Однако * где-то еще * должен находиться в том же объеме, который не имеет большого смысла. – vadian

+0

Добавлены разъяснения – Alexander

1

Просто создайте ленивую инстанцированный переменный на верхнем уровне класса

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

и назначить пункт меню переменной

primaryMenu.addItem(mySpecialMenuItem) 

Теперь вы можете изменить название

mySpecialMenuItem.title = "Something Else" 

Пользу от ленивого реализованного переменного не будет инициализированы, пока он не доступен в первый раз, и вы можете избежать необязательного или неявной развернутого необязательным.

Смежные вопросы