我有很多iOS经验,但
Cocoa让我有些困惑.我阅读了几篇关于Cocoa的Apple文档,但仍然有一些我在任何地方都找不到的细节.看来文档是在基于NSDocument的
Xcode模板更新为使用NSViewController之前编写的,所以我不清楚我应该如何组织我的应用程序.该模板使用NSWindow NSViewController创建一个故事板.
我的理解是我应该将NSWindowController或NSWindow子类化为对我的模型对象的引用,并在makeWindowControllers()中设置它.但是,如果我想使用NSViewController而不是只是将所有内容放在窗口中,我还需要以某种方式访问我的模型.我注意到在我的视图控制器中有一个叫做RepresentObject的东西,它似乎意味着要保存一些模型对象(然后被强制转换),但它总是为零.这是如何设置的?
我发现很难正确地提出这个问题,但我想我的问题是:如何在基于文档的应用程序中正确使用NSViewController?
PS:我知道NSWindowController通常用于管理多个窗口,这些窗口作用于一个文档,所以假设我只需要一个窗口,那么我就不需要NSWindowController.但是,要求可能会改变,从长远来看使用NSWindowController可能会更好,对吧?
解决方法
我没有潜入故事板,但这是它的工作原理:
如果您的应用程序必须支持10.9及更低版本创建子类NSWindowController的自定义
将这样的代码放入NSDocument子类中
- (void)makeWindowControllers { CustomWindowController *controller = [[CustomWindowController alloc] init]; [self addWindowController:controller]; }
如果你的应用程序有多个窗口而不是在这里或其他地方添加它们(按需加载)但不要忘记将它添加到文件windowscontroller数组(addWindowController