Как я могу представить модальный от NSWindowController, используя Swift для приложения MacOS.Я не использую раскадровки - PullRequest
0 голосов
/ 07 апреля 2019

Я создаю инфраструктуру macOS, которая запускается в начале процесса входа в систему, и я хочу показать некоторую информацию пользователю в окне. У меня есть NSWindowController с файлом .XIB, и это главное окно для моей платформы.

Я бы хотел добавить больше presentAsSheet в другое представление. Для этого я создал NSViewController с .XIB для определения пользовательского интерфейса, который я хочу представить в модальном режиме, но здесь я полностью заблокирован, потому что получение contentViewController из окна всегда nil

Любая помощь? Спасибо

Я инициализирую свое главное окно следующим образом:

func run() {
  NSApp.activate(ignoringOtherApps: true)
  mainWC = MainWC(windowNibName: "MainWC")
  guard mainWC.window != nil else {
    return
  }
  NSApp.runModal(for: mainWC.window!)
}

Где я пытаюсь представить другой NSViewController "

self.window?.contentViewController?.presentAsSheet(customViewController)

В моем MainWindowController я делаю это:

@IBAction func btnAction(_ sender: Any) {
  let customModal = CustomModal(windowNibName: "CustomModal")
  self.window?.beginSheet(customModal.window!, completionHandler: { code in
    print(message: "Clicked")
  })
}

Модал никогда не появляется

1 Ответ

0 голосов
/ 07 апреля 2019

Вы не можете представить представление, пока окно и представление содержимого не были загружены

Либо внутри контроллера окна в windowDidLoad()

override func windowDidLoad() {
    super.windowDidLoad()
    // present the view
}

или даже в viewDidLoad контроллера вида

override func viewDidLoad() {
    super.viewDidLoad()
    // present the view
}
...