[英]Action of StatusItem not working in Swift
因此,我是Swift的新手,想在MacOS上創建一個簡單的示例狀態欄應用程序。 為了保持整潔,我創建了一個子類App,該子類正在創建狀態項。 然后,在AppDelegate.swift的applicationDidFinishLaunching
函數中創建此類。
但是當我按下狀態圖標時,控制台上什么也不會打印。 但是,如果我將代碼復制到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
}
}
如果該按鈕顯示出來,但單擊時沒有任何反應,則對我來說,您需要確保將按鈕的target
設置為您的App
實例。 例如:
button.target = self
否則,僅在響應者鏈中跟蹤該操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.