0
我正在用Swift 3製作一個小型菜單欄應用程序,我希望應用程序在單擊圖標時重新加載一些數據,但我也希望它顯示狀態菜單?MacOS statusbar app顯示菜單和運行功能點擊swift 3
下面是我的代碼示例:
// AppDelegate.swift
import Cocoa
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
@IBOutlet weak var statusMenu: NSMenu!
@IBAction func quitClicked(_ sender: NSMenuItem) {
NSApplication.shared().terminate(self)
}
let statusItem = NSStatusBar.system().statusItem(withLength: NSVariableStatusItemLength)
func applicationDidFinishLaunching(_ aNotification: Notification) {
if let button = statusItem.button {
button.title = "App"
button.action = #selector(AppDelegate.doSomething(sender:))
statusItem.menu = statusMenu
}
}
func applicationWillTerminate(_ aNotification: Notification) {
}
func doSomething(sender: AnyObject?) {
NSLog("do something")
}
}
如果我註釋掉
// statusItem.menu = statusMenu
中的doSomething()函數將運行,但我無法弄清楚如何既展示菜單並運行doSomething功能,我該怎麼做?
我剛剛發現,爲避免狀態欄應用程序崩潰(如果某個函數正在運行並且狀態欄應用程序圖標上存在一個clic),將這些行添加到每個函數是有幫助的:statusItem.isEnabled = false(在開始處)和statusItem.isEnabled = true(在函數結尾處)。 – Fredo