Macos 动态更改NSF窗口';内容视图控制器

Macos 动态更改NSF窗口';内容视图控制器,macos,nswindow,nswindowcontroller,Macos,Nswindow,Nswindowcontroller,我有一个NSWindowController和一个NSViewController,两者都配置在情节提要中 在Interface Builder中设置contentViewController时,一切正常 当我在windowDidLoad中以编程方式设置contentViewController时,一切正常 现在,我正在尝试更新内容视图控制器,以响应工具栏按钮的单击(如下所示) 此分配导致在视图控制器上调用viewwillbeen,但此时内容视图没有分配窗口 为什么会这样?是否可以像这样动态

我有一个
NSWindowController
和一个
NSViewController
,两者都配置在情节提要中

  • 在Interface Builder中设置
    contentViewController
    时,一切正常
  • 当我在
    windowDidLoad
    中以编程方式设置
    contentViewController
    时,一切正常
现在,我正在尝试更新内容视图控制器,以响应工具栏按钮的单击(如下所示)

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

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

它看起来像:

  • 在情节提要或
    windowDidLoad
    中配置内容视图时,在调用
    viewwillbeen
    时,即当窗口本身出现时,该视图已经有一个窗口
  • 当在窗口出现后设置内容视图时,
    视图将出现
    被调用,以指示内容视图将添加到窗口中;在调用
    viewWillLayout
    之前,视图没有窗口
我使用窗口来访问当前文档,所以我的解决方案是在更新内容之前访问文档,并使用它来配置内容视图控制器

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