NSStatusItem не отображается в строке меню - PullRequest
0 голосов
/ 28 мая 2018

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

Я уже дважды проверил свой код, но я не проверяюНе могу найти причину, по которой он меняет свое поведение.Любопытно, что если я продолжу копировать и вставлять мой код во вновь созданный проект приложения для какао, он снова будет работать нормально.WTF?Я как-то испортил настройки своего проекта?Но этого не может быть.Я буквально просто поместил код, который рисует изображение кнопки из метода applicationDidFinishLaunching, в отдельный метод, который я назвал initStatusBarImage () и вызвал его из applicationDidFinishLaunching.Затем он внезапно не показывает элемент строки состояния, я отменяю изменения кода, запускаю его, и он все еще не работает.Я что-то упустил?Вот пример кода, с которым у меня есть проблемы, как описано.И да, изображение находится в моей папке активов, это не проблема

import Cocoa

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {

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

func applicationDidFinishLaunching(_ aNotification: Notification) {
    let img1 = NSImage(named:NSImage.Name("progressbar-15"))
    let img2 = NSImage(named:NSImage.Name("progressbar-15"))
    let img3 = NSImage(size: NSSize(width: 20, height: 18))
    img3.lockFocus()
    img1?.draw(at: NSPoint(x: 0, y: 0), from: NSZeroRect, operation: NSCompositingOperation.sourceOver, fraction: 1.0)
    img2?.draw(at: NSPoint(x: 10, y: 0), from: NSZeroRect, operation: NSCompositingOperation.sourceOver, fraction: 1.0)
    img3.unlockFocus()
    if let but = sItem.button {
        but.image = img3
    }
}

func applicationWillTerminate(_ aNotification: Notification) {
    // Insert code here to tear down your application
}

}

...