Как обновить NSStausItem из другого файла?

Я хочу обновить свойство button.title NSStausItem в строке состояния, когда пользователь нажимает кнопку в моем представлении настроек. Однако в настоящее время NSStatusItem не изменяется.

AppDelegate:

let statusItem = NSStatusBar.system.statusItem(withLength:NSStatusItem.variableLength)

func applicationDidFinishLaunching(_ aNotification: Notification) {
    statusItem.button?.title = "A title"
}

func updateTitle(newTitle : String) {
    statusItem.button?.title = newTitle
}

НастройкиВидеоконтроллера:

@IBAction func didKlickChange(_ sender: Any) {
    AppDelegate().updateTitle(newTitle: "Updated title")
}

Когда я запускаю приложение, StatusBar показывает новый StatusItem с заголовком «A title». Так хорошо до сих пор. Но когда я нажимаю на кнопку, единственное, что происходит, это то, что новый элемент статуса появляется на очень короткое время рядом со старым элементом статуса. Старый не обновляется. Есть ли правильное решение для этого?

Спасибо за вашу помощь!


person hri    schedule 15.08.2019    source источник
comment
Возможный дубликат Как изменить NSStatusItem вне класса.   -  person Willeke    schedule 15.08.2019


Ответы (1)


AppDelegate() создает совершенно новый экземпляр класса, который не является ожидаемым экземпляром. Вам нужна реальная ссылка

@IBAction func didKlickChange(_ sender: Any) {
    (NSApp.delegate as! AppDelegate).updateTitle(newTitle: "Updated title")
}
person vadian    schedule 15.08.2019