Как изменить NSStatusItem вне класса

Я создаю NSStatusItem в классе с именем StatusMenuController, как это

class StatusMenuController: NSObject {

let statusItem = NSStatusBar.system().statusItem(withLength: NSVariableStatusItemLength)

override func awakeFromNib() {
    let icon = NSImage(named: "MenuBar")
    icon?.isTemplate = true // best for dark mode

    if let button = statusItem.button {
        button.image = icon
        button.action = #selector(StatusMenuController.showPomoNow)
        button.sendAction(on: [.leftMouseUp, .rightMouseUp])
        button.target = self
    }
    statusItem.title = "25:00"
}

Я могу легко изменить название в этом классе. Это изменится, как я и ожидал.

Я ссылаюсь на этот класс в AppDelegate

let statusMenu = StatusMenuController()

Добавить изменить его в другой класс

statusMenu.statusItem.title = "24:31"

Я ожидаю, что текст 25:00 изменится на "24:31", но это выглядит так. Скриншот

Система создает еще один NSStatusItem. Как я могу изменить тот, который создан в StatusMenuController.

1 ответ

Комментарий ООП верен. Я нашел объект, который создает другой StatusMenuController из раскадровки. Я удаляю объект, тогда все ок.

Другие вопросы по тегам