gpt4 book ai didi

swift - MacOS 状态栏应用程序显示菜单并使用 swift 3 单击时运行功能

转载 作者:行者123 更新时间:2023-11-28 12:29:50 25 4
gpt4 key购买 nike

我正在使用 Swift 3 制作一个小型菜单栏应用程序,我希望该应用程序在我单击该图标时重新加载一些数据,但我还希望它显示 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")
}


}

如果我注释掉

// statusItem.menu = statusMenu 

doSomething() 函数将运行,但我不知道如何既显示菜单又运行 doSomething 函数,我该怎么做?

最佳答案

将菜单的委托(delegate)设置为应用程序委托(delegate)(或其他对象)并实现optional func menuWillOpen(_ menu: NSMenu)NSMenuDelegate协议(protocol)。

关于swift - MacOS 状态栏应用程序显示菜单并使用 swift 3 单击时运行功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42313403/

25 4 0