Swift 从ViewController设置菜单栏图标

Swift 从ViewController设置菜单栏图标,swift,xcode,appdelegate,menubar,nsstatusitem,Swift,Xcode,Appdelegate,Menubar,Nsstatusitem,如何从另一个ViewController更改MacOS应用程序的菜单栏图标 AppDelegate.swift(初始化菜单栏图标) ViewController.swift(尝试设置菜单栏图标❌) 我找到了这个,但这并没有改变我的菜单栏图标: let image=NSImage.init(名为:NSImage.Name(rawValue:“AltAppIcon”)) NSApp.applicationImage=图像 查看BOINC图标在其菜单栏右下角的自定义暂停符号/徽章。此应用程序

如何从另一个ViewController更改MacOS应用程序的菜单栏图标

  • AppDelegate.swift(初始化菜单栏图标)
  • ViewController.swift(尝试设置菜单栏图标❌)
我找到了这个,但这并没有改变我的菜单栏图标:

let image=NSImage.init(名为:NSImage.Name(rawValue:“AltAppIcon”))
NSApp.applicationImage=图像

查看BOINC图标在其菜单栏右下角的自定义暂停符号/徽章。此应用程序的图标会发生变化。他们是否会将该文件的名称写入并将其更改为“暂停图标”图像


更新*

设置菜单栏图标的
AppDelegate.swift
函数起作用:

AppDelegate.swift

func setIcon() {
  let onIcon = NSImage(named: "fv-mini-icon-green")
  statusItem.button?.image = onIcon
}
ViewController.swift

func setIcon() {
  let onIcon = NSImage(named: "fv-mini-icon-green")
  statusItem.button?.image = onIcon
}
func taskOnIcon(){
DispatchQueue.main.async(执行:{
将appDele=NSApplication.shared.delegate设为!AppDelegate
appDele.setIcon()
})
}
这里有一种方法

class AppDelegate: NSObject, NSApplicationDelegate {
    var statusBarItem: NSStatusItem!

    func applicationDidFinishLaunching(_ aNotification: Notification) {

        let statusBar = NSStatusBar.system
        statusBarItem = statusBar.statusItem(withLength: 16)

        let button = statusBarItem.button
        button?.image = NSImage(named: "fv-mini-icon-green")

    // .. other code here




菜单栏图标是
NSStatusItem
实例的一部分请参见此处: