Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 是否为根窗口设置NSWindowController?_Objective C_Cocoa - Fatal编程技术网

Objective c 是否为根窗口设置NSWindowController?

Objective c 是否为根窗口设置NSWindowController?,objective-c,cocoa,Objective C,Cocoa,我正在使用cocoa应用程序的默认XCode模板。默认情况下,它有一个MainMenu.xib,带有一个窗口和一个菜单——棒极了 我打算在代码中构建我的视图/子视图,然后创建一个RootView:NSView和一个RootViewController:NSViewController,并将它们绑定到IB中,以便该窗口中的基本视图是我的RootView,由我的RootViewController控制 输入我的问题——如何将RootWindowController绑定到NSWindow?我认为文件所

我正在使用cocoa应用程序的默认XCode模板。默认情况下,它有一个MainMenu.xib,带有一个窗口和一个菜单——棒极了

我打算在代码中构建我的视图/子视图,然后创建一个RootView:NSView和一个RootViewController:NSViewController,并将它们绑定到IB中,以便该窗口中的基本视图是我的RootView,由我的RootViewController控制


输入我的问题——如何将RootWindowController绑定到NSWindow?我认为文件所有者是关键,但它设置为NSApplication,我认为这是正确的。在我的例子中,NSWindowController的主要目标是基于从其他服务触发的NSNotifications来管理工具栏——这是正确的设计吗?我认为我不能从我的RootViewController执行此操作,因为我没有窗口引用,但这是我应该执行此操作的地方吗?

很多时候,应用程序委托被用作非基于文档的应用程序的主/中央控制器。这是个好地方。如果您愿意,这可以是NSWindowController实例。您只需删除nib中现有的窗口即可

NSWindowController API参考中的有用信息:

当您希望增强默认行为时,例如为窗口提供自定义标题或在加载窗口之前执行一些设置任务时,应创建NSWindowController的子类。在类的初始化方法中,请确保调用initWithWindowNibName:。。。初始值设定项或initWithWindow:初始值设定项。哪一个取决于窗口对象是源于nib文件还是通过编程创建的

但如果是我,我就不会费心走这条路;我只是将这个逻辑添加到我的应用程序控制器(并将其设置为应用程序代理),因为这是应用程序级别的东西。不需要添加一层复杂性,除非您有很多要划分的主要UI更新复杂性