Итак, я новичок в Swift и хотел создать простое приложение-пример строки состояния в MacOS.
Чтобы сохранить вещи в чистоте, я создал приложение подкласса, которое создает элемент состояния. Этот класс затем создается в функции applicationDidFinishLaunching
в AppDelegate.swift.
Но как-то ничего не печатается на консоли, когда я нажимаю значок состояния. Однако, если я копирую код в файл AppDelegate, он работает. Кто-то знает, что я делаю неправильно и почему он не работает в подклассе?
Вот код моего собственного класса:
import Cocoa
class App: NSObject {
let menuBarItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.squareLength)
override init() {
print("created app instance");
if let button = menuBarItem.button {
button.image = NSImage(named: NSImage.Name("StatusBarButtonImage"))
button.action = #selector(test(_:))
}
}
@objc func test(_ sender: Any?) {
print("button was pressed")
}
}
и AppDelegate:
import Cocoa
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
var appInstance: App!
func applicationDidFinishLaunching(_ aNotification: Notification) {
// Insert code here to initialize your application
appInstance = App()
}
func applicationWillTerminate(_ aNotification: Notification) {
// Insert code here to tear down your application
}
}