16

经过长时间的 iPhone 工作后,我将重新开始在 Mac 上进行 Cocoa 开发。我之前在 Mac 上使用 Cocoa 的经验只是一些极小的工具。我正在寻找建立一些严肃的东西。

看看像 iPhoto(或 Mail 或 Things 或....)这样的现代 Cocoa 应用程序,许多应用程序使用单窗口、基于源列表的方法。我正在尽力解决这个问题,因为它似乎提供了很好的体验。但是,我遇到了一些麻烦。这是我认为它应该看起来的样子,但我想知道其他人是如何做到的,以及真正最好的方法是什么:

  • 应用程序的起点是一个 AppDelegate 对象,该对象在启动后会从 nib 创建一个 Window[Controller?] 并设置其数据(例如来自 CoreData)

  • WindowController 加载一个窗口,其中基本上只有一个 NSSplitView。

  • splitview 的左侧有一个设置为 SourceList 样式的 NSTableView 或 NSOutlineView。

  • 右侧是应用程序的主要内容,取决于选择了表格视图的哪个项目。

我会假设某处(在哪里?)有 NSViewControllers 管理将出现在右侧的每个不同视图(想想 iPhoto 如何拥有所有照片、事件、面孔、地点等,我想它们都可以出现在不同的笔尖... 它是否正确?)。

那些视图控制器可能绑定到左侧的源列表......这是如何工作的(源列表可能由 NSViewControllers 的 NSArrayController 支持?)。

无论如何,这些是我的想法,我是完全脱离基地还是......?我浏览了网络,在这里找到了这篇文章,并且查看了一些 Apple 源代码,但我似乎无法理解它。欢迎任何指导。

4

2 回答 2

6

如果您要将某些视图换成其他视图,则将视图分成单独的 nib 主要是好的,因为您可以懒惰地加载它们。是的,在现代应用程序中,您将使用 NSViewController,或者可能使用来自 KTUIKit 的KTViewController(请参阅她共同撰写的有关 NSViewController 的帖子

但是,不要只是跑到源列表的怀抱中。单窗口界面可能适用于简单的应用程序,但当您有很多事情要做时,它很快就会变得笨拙,因为将它们分成单独的窗口可能会更好地服务;iTunes 和 Xcode 都提供了很多这样的例子(尤其是后者,因为你可以在 SWI 和 MWI 之间切换)。

您需要考虑多窗口或单窗口界面是否更适合您的应用程序。所有应用程序都没有一个答案;这完全取决于您的应用程序、您希望它做什么以及您希望它的外观——您(加上您的团队的其他成员,如果您有的话)是唯一可以回答这个问题的人。您可能想要做一些纸上原型设计,以便在每个方向上进行快速实验,以便您至少可以将两个 UI 的假示例相互对照。

于 2009-09-03T05:17:35.380 回答
4

了解笔尖拆分方式的一种简单方法是进入 iPhoto 目录并开始打开笔尖

如果您想进一步探索类结构,可以尝试使用F-Script浏览

于 2009-09-03T02:44:40.920 回答