У меня было приложение 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, для меня это интуитивно понятно, сначала должно быть окно, а потом представление.