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

Добрый день, когда я закрываю приложение MacOS с помощью красной кнопки (расположенной в верхнем левом углу), приложение MacOS исчезает, но значок док-станции все еще остается внизу. Если я щелкну правой кнопкой мыши значок док-станции, я хочу добавить пункт меню «Повторно открыть», чтобы повторно открыть приложение. Ниже приведен код, созданный до определенного момента ... Когда я нажимаю "Re-Open", он печатает "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")
  }
}

person Wild8x    schedule 10.04.2020    source источник
comment
Приложение закрывается при закрытии окна? Вы хотите перезапустить работающее приложение?   -  person Willeke    schedule 11.04.2020
comment
Когда я нажимаю красную кнопку в верхнем левом углу окна, окно исчезает (закрывается или закрывается?), Но верхняя строка меню приложения остается до тех пор, пока мы не коснемся окон других приложений. Теперь с окончательным кодом я могу щелкнуть правой кнопкой мыши значок док-станции и щелкнуть добавленный пункт меню под названием Re-Open, чтобы повторно открыть приложение. Это то, что я хотел.   -  person Wild8x    schedule 11.04.2020
comment
Красная точка закрывает окно, приложение все еще работает. Ответ на вопрос: «Как использовать меню док-станции MacOS для перезапуска приложения?».   -  person Willeke    schedule 11.04.2020
comment
Спасибо Виллеке за сообщение, что красный не закрывает приложение. Я понимаю, что кода, который я использую, слишком много, потому что он перезапускает приложение, но я не смог найти код, который просто повторно открывает окно ...   -  person Wild8x    schedule 12.04.2020


Ответы (1)


Наконец, последний рабочий код, который нужно добавить для функции 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)
}

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

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

person Wild8x    schedule 10.04.2020