私はSwift 3の小さなメニューバーアプリを作っています。アイコンをクリックするとアプリがデータを読み込んでくれますが、 statusMenu?私はdoSomethingの()関数が実行されますMacOSのステータスバーアプリのshow menuとclick on swift 3の機能を実行する
// statusItem.menu = statusMenu
をコメントアウトが、私は両方表示する方法を見つけ出すことができない場合
// 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")
}
}
:以下
は、私のコードのサンプルですメニューを開き、doSomething関数を実行します。どうしたらいいですか?
私は、関数が実行されているときにステータスバーアプリケーションがクラッシュするのを避けるために、ステータスバーのアプリアイコンに1つのclicがあることを知りました。これらの行を各関数に追加すると便利です:statusItem.isEnabled = false statusItem.isEnabled = true(関数の最後にあります)。 – Fredo