我有一个NSWindowController
和一个NSViewController
,都在故事板中配置。
contentViewController
时,一切都按预期工作。contentViewController
中以编程方式设置windowDidLoad
时,一切都按预期工作。现在我正在尝试更新内容视图控制器以响应单击工具栏按钮(下方)。
@IBAction func toolbarButtonClicked(_ sender: Any) {
contentViewController = storyboard?.instantiateController(withIdentifier: "VC") as! NSViewController?
}
此分配导致在视图控制器上调用viewWillAppear
,但此时内容视图没有分配窗口。
这是为什么?是否可以像这样动态更改窗口contentViewController
?
答案 0 :(得分:1)
看起来像:
windowDidLoad
中配置内容视图时,视图在viewWillAppear
被调用时已经有一个窗口,即窗口本身出现时。viewWillAppear
表示内容视图将添加到窗口中;在调用viewWillLayout
之前,视图没有窗口。我正在使用该窗口访问当前文档,因此我的解决方案是在更新内容之前访问文档并使用它来配置内容视图控制器。