Как использовать меню док-станции приложения MacOS, чтобы повторно открыть приложение, которое было закрыто (с помощью красной кнопки, расположенной в верхнем левом углу)? - PullRequest
0 голосов
/ 11 апреля 2020

Добрый день, Когда я закрываю свое приложение MacOS с помощью красной кнопки (расположенной в верхнем левом углу), приложение MacOS исчезает, но значок док-станции все еще там внизу. Если я щелкну правой кнопкой мыши на значке док-станции, я хочу добавить пункт меню «Открыть заново», чтобы повторно открыть приложение. Ниже приведен код, созданный до определенного момента ... Когда я нажимаю «Повторно открыть», в консоли выводится «XXX» ... потому что я не нашел код для повторного открытия приложения! Любая помощь будет высоко ценится, чтобы заполнить нижеприведенный вызов функции reOpen (отправитель: NSMenuItem) Спасибо

Ниже приводится мой файл содержимого AppDelegate.swift:

import Cocoa
import SwiftUI

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {

  var window: NSWindow!

  func applicationDidFinishLaunching(_ aNotification: Notification) {

    let contentView = ContentView()

    window = NSWindow(
      contentRect: NSRect(x: 0, y: 0, width: 480, height: 300),
      styleMask: [.titled, .closable, .miniaturizable, .resizable, .fullSizeContentView],
      backing: .buffered, defer: false)
    window.center()
    window.setFrameAutosaveName("Main Window")
    window.contentView = NSHostingView(rootView: contentView
      window.makeKeyAndOrderFront(nil)
  }

  func applicationWillTerminate(_ aNotification: Notification) {
    // Insert code here to tear down your application
  }

  func applicationDockMenu(_ sender: NSApplication) -> NSMenu? {
    let menu = NSMenu()
    let reOpenMenuItem = NSMenuItem(title:"Re-Open", action:#selector(AppDelegate.reOpen), keyEquivalent:"")
    menu.addItem(reOpenMenuItem)
    return menu
  }

  @objc func reOpen(sender : NSMenuItem) {
    print("XXX")
  }
}

1 Ответ

0 голосов
/ 11 апреля 2020

Наконец, последний рабочий код, который нужно добавить для функции reOpen:

@objc func reOpen(sender : NSMenuItem) {
  print("XXX")
  let url = URL(fileURLWithPath: Bundle.main.resourcePath!)
  let path = url.deletingLastPathComponent().deletingLastPathComponent().absoluteString
  let task = Process()
  task.launchPath = "/usr/bin/open"
  task.arguments = [path]
  task.launch()
  exit(0)
}

Я нашел код здесь по этой ссылке:

введите описание ссылки здесь

...