macos модальное новое окно, windowDontLoad windowController вызывается после viewDidLoad его contentView? - PullRequest
0 голосов
/ 08 февраля 2019

У меня было приложение macos, использующее раскадровку, и в раскадровке есть два окна для него.

Если я нажму кнопку в первом окне, оно будет модальным для второго окна, но я нашелСначала загружается contentView нового окна, а затем - загрузка окна.Как это может быть?

код, как показано ниже:

+-----------+      +------------+
|           |      |            |
|  Window A |      | Window B   |
|           |      |            |
+-----+-----+      +-----+------+
      v                  v
+-----+-----+      +-----+-------
| View A    |      | View B     |
|           |      |            |
| buttonA   |      | property   |
+-----------+      +------------+


Код:

  @IBAction func buttonA(_ sender: Any) {

    let storyboard = NSStoryboard(name: "Main", bundle: nil)
    let windowBWC = storyboard.instantiateController(withIdentifier: "Window B Controller") as! WindowBWindowController

    let viewBVC = windowBWC.contentViewController as! ViewBViewController

    // set viewBVC property


    let application = NSApplication.shared
    guard let window = viewBVC.view.window else { return }
    application.runModal(for: window)

    window.close()
  }

И в файлах:

// WindowBWindowController.swift

class WindowBWindowController: NSWindowController {

    override func windowDidLoad() {
        super.windowDidLoad()

        // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.

      print("windowDidLoad")
    }
}
// ViewBViewController.swift
class ViewBViewController: NSViewController {
  override func viewDidLoad() {
    print("viewDidLoad")
  }
}

Когда я нажимаю кнопку, отображается представление, но сначала у меня был viewDidLoad, а затем windowDidLoad, для меня это интуитивно понятно, сначала должно быть окно, а потом представление.

...