objective-c - 帮助理解多 Controller Cocoa 应用程序

标签 objective-c cocoa

我的第一个 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/

相关文章:

objective-c - 修改 iOS 中的 BOOL 内部方法

ios - 根据UITextview高度变化调整UILabel

objective-c - 订阅(或列出)所有应用程序分发的通知

swift - Xcode MacOS 存储所需二进制文件的位置

objective-c - UITextView 未显示在生成的 PDF 上

ios - 围绕多边形绘制边框

ios - 检测应用程序何时在后台状态 iOS 中被用户杀死

ios - 比较 Objective-C 中的 2 个对象

macos - 用于多个 NSPanel 窗口的键/主 NSWindow 响应程序链

ios - 删除/重置核心数据中的所有条目?