我的第一个 ObjC/Cocoa 应用程序..我很困惑。
我正在为我们的大学生编写一个状态项应用程序来安装/卸载校园打印机。他们可以配置最喜欢的打印机列表,该列表应该可以在状态项的菜单中轻松访问。到目前为止,我的菜单中的所有内容都在工作。现在我正在尝试编写首选项窗口,他们可以在其中管理他们最喜欢的列表。
我有一堆 Printer
对象存储在一个单例对象 PrinterData
的 NSArray 中。谓词方法允许我获取最喜欢的和不最喜欢的打印机对象的数组。
PrinterController
在状态项菜单中绘制 Printer
对象。
PreferenceController
有一个带有多个 View (工具栏项目)的 nib,包括收藏夹的 View 。我决定以 Split View样式显示所有打印机,它们的名称在左侧的 NSTableView 中,附加数据在右侧。我还将在右侧放置一个复选框以控制它是否是最喜欢的打印机,并希望使用通知能够重绘状态项菜单。也许左边有一些粗体字体绑定(bind)..
我将 TableView 内容绑定(bind)到 ArrayController 以显示来自 PrinterData
的对象,这也是 nib 中的一个对象。
我能否对我的组织方式提出一些批评?对任何方面的建议?
最佳答案
您可以使用 NSWindowController
来管理多个 NSViewController
对象。 Apple 有一个 excellent example here这演示了 MVC 模式。
按照 Apple 的示例,在任何 View Controller 中,您都可以像这样切换到另一个 View Controller :
MainWindowController* windowController = [[[self view] window] windowController];
[windowController changeViewController:kLoginViewController];
基本上,您的应用程序委托(delegate)会创建一个窗口 Controller ,它会为您想要的所需 View 创建 View Controller 。这样,如果您需要添加或删除 View ,该过程将非常轻松。
你应该看看Core Data Applications如果您想从多个 View 访问相同的数据。另一种方法是将打印机对象的 NSArray
存储在 Application Delegate 中,并将对它们的引用传递给需要访问对象的任何 View ,但我会推荐 Core Data 而不是该方法。
关于objective-c - 帮助理解多 Controller Cocoa 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4879752/