Xcode NSStatusBar Элемент не появляется

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

Я просмотрел документацию и вижу, что за последнее время что-то изменилось, например statusItem.title стал statusItem.button?.title, Но, похоже, ничего не пропустил. Любая помощь?

Вот мой код:

var statusItem : NSStatusItem? = nil

    func applicationDidFinishLaunching(_ aNotification: Notification) {
        // Insert code here to initialize your application

        let statusItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength)
        statusItem.button?.title = "Connect!"

}

2 ответа

Ах, блестящий. Это сработало! Спасибо Салех. Поиграв с обоими нашими кодами, мой, похоже, работал с объявлением var в верхней части и без экземпляра NSMenuDelegate. Кажется, моя проблема в том, что я говорил:

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

Все, что мне нужно было сделать, чтобы это сработало, это убрать "let" и просто сказать:

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

  1. AppDelegate должен быть экземпляром NSMenuDelegate
  2. Определите statusItem при создании
  3. Установите заголовок кнопки в приложении DidFinishLaunching callback

    class AppDelegate: NSObject, NSApplicationDelegate, NSMenuDelegate {
    let statusItem = NSStatusBar.system.statusItem(withLength:NSStatusItem.variableLength)
    func applicationDidFinishLaunching(_ aNotification: Notification) {
        if let button = statusItem.button {
            //button.image = NSImage(named:NSImage.Name("StatusBarButtonImage"))
            button.title = "connect"
            //button.action = #selector(doSomething(_:))
        }
    }
    
Другие вопросы по тегам