簡體   English   中英

StatusItem的操作在Swift中不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM