【问题标题】:Do NSViewControllers live inside NSWindowControllers?NSView 控制器是否存在于 NSWindow 控制器中?
【发布时间】:2015-05-26 20:56:05
【问题描述】:
刚开始学习如何为 Mac 制作应用程序,我有一个关于 NSViewControllers 和 NSWindowControllers 如何协同工作的问题。如果我理解正确的话,NSWindowControllers 是处理与我的应用程序显示的特定窗口相关的所有代码的 Objective-C 类。 NSViewControllers 也是围绕特定视图组的 Objective-C 类。
如果到目前为止我在正确的轨道上,我是否可以为我想要在主窗口中进出的每个视图/屏幕创建一个新的NSViewController?或者我应该将我的视图元素直接添加到NSWindowController 并找出一种方法来根据需要将各个元素换入/换出窗口?
【问题讨论】:
标签:
objective-c
macos
cocoa
interface-builder
【解决方案1】:
控制器逻辑的放置位置取决于应用程序、窗口或视图的复杂性。大多数简单的应用程序都将所有内容放入它们的应用程序委托中。基于 NSDocument 的应用程序通常将所有内容放入它们的 NSDocument 子类中……如果您有多个窗口(具有不相似的行为),那么将它们的控制器代码分解为不同的 NSWindowController 子类可能更容易。通常你并不真正需要 NSViewControllers,除非一个视图(或一组视图)的复杂性超过你想要放入一个(可能已经重载的)NSWindowController 的程度。
在您交换大组(子)视图的情况下,每个(子)视图集都在它们自己的 NSViewController 上工作,这可能会简化事情。
在这种情况下,NSWindowController 只是充当 NSViewController 控制器... ;-)