Swift macos模态新窗口、windowController';在其contentView';那是什么?
我有一个使用脚本的macos应用程序,脚本中有两个窗口 如果我单击第一个窗口上的按钮,它将切换到第二个窗口,但我发现新窗口的contentView首先加载,然后是窗口加载。这怎么可能 代码如下:Swift macos模态新窗口、windowController';在其contentView';那是什么?,swift,macos,nsviewcontroller,nswindowcontroller,Swift,Macos,Nsviewcontroller,Nswindowcontroller,我有一个使用脚本的macos应用程序,脚本中有两个窗口 如果我单击第一个窗口上的按钮,它将切换到第二个窗口,但我发现新窗口的contentView首先加载,然后是窗口加载。这怎么可能 代码如下: +-----------+ +------------+ | | | | | Window A | | Window B | | | | | +-----+-----+
+-----------+ +------------+
| | | |
| Window A | | Window B |
| | | |
+-----+-----+ +-----+------+
v v
+-----+-----+ +-----+-------
| View A | | View B |
| | | |
| buttonA | | property |
+-----------+ +------------+
代码:
在文件中:
// 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")
}
}
当我单击按钮时,视图将显示,但我先有viewDidLoad,然后是windowDidLoad,这对我来说是违反直觉的,应该先有一个窗口,然后是视图。加载视图是加载窗口的一部分<代码>windowDidLoad在加载窗口nib文件(包括视图)时被调用。@Willeke谢谢,我想我在某个地方读到窗口将根据需要加载,也许这解释了为什么窗口加载晚于视图。如果调用[super viewDidLoad],您应该可以安全地请求视图的窗口。此外,苹果工程师喜欢调用“ViewDidMoveToWindows”来查看是否有有效的窗口。加载视图是加载窗口的一部分<代码>windowDidLoad在加载窗口nib文件(包括视图)时被调用。@Willeke谢谢,我想我在某个地方读到窗口将根据需要加载,也许这解释了为什么窗口加载晚于视图。如果调用[super viewDidLoad],您应该可以安全地请求视图的窗口。苹果的工程师们也喜欢打电话给“ViewDidMoveToWindows”,看看你是否有一个有效的窗口。
// 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")
}
}