2011-02-02 23 views
3

我的第一个ObjC /可可应用程序..我很困惑。帮助理解多控制器可可应用程序

我正在为我们的大学学生写一个状态项应用程序来安装/卸载校园打印机。他们可以在状态项目的菜单中配置应该可以轻松访问的最喜欢的打印机列表。到目前为止,我已经在菜单中的一切工作。现在我正在尝试编写他们可以管理他们最喜欢的列表的偏好窗口。

我有一堆Printer对象存储在一个NSArray中的一个单独对象PrinterData。谓词方法允许我获取最喜欢的数组,而不是最喜欢的打印机对象。

PrinterController在状态项目菜单中绘制Printer对象。

PreferenceController有一个带多个视图(工具栏项目)的笔尖,其中包括收藏夹的视图。我决定以分体式风格显示所有打印机,并在左侧的NSTableView中显示它们的名称,并在右侧显示其他数据。我还会在右侧放置一个复选框来控制它是否是最喜欢的打印机,并希望使用通知来重绘状态项目菜单。也许一些粗体字体绑定在左边..

我将TableView内容绑定到ArrayController以显示PrinterData中的对象,该对象也是nib中的对象。

我可以批评我如何组织这个?对于任何方面的建议?

回答

1

您可以使用NSWindowController来管理多个NSViewController对象。苹果有一个excellent example here,表明MVC模式。

继苹果公司的例子,任何视图控制器中你可以切换到另一个视图控制器是这样的:

MainWindowController* windowController = [[[self view] window] windowController]; 
[windowController changeViewController:kLoginViewController]; 

基本上你的应用程序代理创建一个窗口控制器,它会为你想所需的意见视图控制器有。这样,如果你需要添加或删除视图,这个过程是非常痛苦的。

如果您想访问多个视图中的相同数据,您应该查看Core Data Applications。另一种方法是将打印机对象的NSArray存储在应用程序委托中,并将引用传递给访问对象所需的任何视图,但我会建议使用该方法的Core Data。

+0

感谢您的建议。切换到同一个窗口中的不同视图并不是我想要做的,但它应该显示一些很好的代码示例。 – joraff 2011-02-07 20:49:30