MacOS 状态栏应用显示菜单和 运行 功能点击 swift 3
MacOS statusbar app show menu and run function on click with swift 3
我正在制作一个带有 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 函数,我该怎么做?
将菜单的委托设置为应用程序委托(或其他对象)并实现NSMenuDelegate
协议的optional func menuWillOpen(_ menu: NSMenu)
。
我正在制作一个带有 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 函数,我该怎么做?
将菜单的委托设置为应用程序委托(或其他对象)并实现NSMenuDelegate
协议的optional func menuWillOpen(_ menu: NSMenu)
。