动态更改NSWindow的contentViewController

时间:2016-11-29 13:32:48

标签: macos nswindow nswindowcontroller

我有一个NSWindowController和一个NSViewController,都在故事板中配置。

  • 当我在Interface Builder中设置contentViewController时,一切都按预期工作。
  • 当我在contentViewController中以编程方式设置windowDidLoad时,一切都按预期工作。

现在我正在尝试更新内容视图控制器以响应单击工具栏按钮(下方)。

@IBAction func toolbarButtonClicked(_ sender: Any) {
    contentViewController = storyboard?.instantiateController(withIdentifier: "VC") as! NSViewController?
}

此分配导致在视图控制器上调用viewWillAppear,但此时内容视图没有分配窗口。

这是为什么?是否可以像这样动态更改窗口contentViewController

1 个答案:

答案 0 :(得分:1)

看起来像:

  • 在情节提要或windowDidLoad中配置内容视图时,视图在viewWillAppear被调用时已经有一个窗口,即窗口本身出现时。
  • 在窗口出现后设置内容视图时,调用viewWillAppear表示内容视图将添加到窗口中;在调用viewWillLayout之前,视图没有窗口。

我正在使用该窗口访问当前文档,因此我的解决方案是在更新内容之前访问文档并使用它来配置内容视图控制器。