Создать окно в строке состояния приложения для MacOS - PullRequest
1 голос
/ 21 февраля 2020

Внимание: здесь начинающий разработчик macOS.

У меня есть приложение в строке меню (без док-станции). Большая часть функциональности приложения находится в меню (а реализация в AppDelegate), но мне нужно отдельное окно, которое открывается, когда я щелкаю один из пунктов меню.

Я хочу использовать SwiftUI, Swift 5, Xcode 11.3.

Я не нашел подходящего способа сделать это. Какие файлы и аналогичные должны быть созданы? Как открыть это окно программно?

@objc func openPreferences() {
  // open a new window here...
}

1 Ответ

1 голос
/ 21 февраля 2020

Вы должны создать окно программно. Я приложил пример кода одного из моих приложений:

private var windowController: NSWindowController?

fileprivate func createWindow()
{
    let storyboard = NSStoryboard(name: "Main", bundle: nil)

    self.windowController = storyboard.instantiateInitialController() as? NSWindowController

    // This is example code to show how to customize the hosted view controller. You can pass additional arguments here (may an important global variables that is declared in the AppDelegate).
    if let contentController = windowController?.contentViewController as? MyWindowViewController
    {
        // Do some assignments here
        // contentController.variable = ....
        // self.windowViewController = contentController // Maybe save for later use.
    }
}

@objc fileprivate func open()
{
    if self.windowViewController == nil
    {
        self.createWindow()
    }

    self.windowController?.showWindow(self)

    NSApp.activate(ignoringOtherApps: true) // Bring window to front.
}

Я связал функцию open () с вызовом кнопки (отсюда и ключевое слово @ obj c). Я думаю, что вы уже сделали это, поэтому моя функция open () будет вашей openPreferences функцией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...