Mac应用程序的一般设计,基于文档?

时间:2012-07-10 21:10:37

标签: objective-c xcode cocoa

我正在学习可可,我正在创建一个应用程序,需要在下面的屏幕截图中使用类似的布局(这似乎是一种非常常见的布局方法)。

这种类型的Cocoa应用程序将采用何种控件/架构?

我还处于学习/阅读的早期阶段,到目前为止我只知道基于文档的应用程序,但这种类型的布局似乎看起来不像基于文档的应用程序,因为它并不真正需要多个窗户打开了。

如果它不是文档,是否有其他设计图案或布局的名称?

从我现在到目前为止,我将其描述为:

如果有人能够详细介绍像这样的应用程序的高级设计,例如:面板数,使用的视图,控件,控制器等,我将不胜感激?

另外,还有几个快速的子问题:

  1. 左窗格中有哪些菜单控件,然后展开和显示子元素?

  2. 当显示首选项窗口时,调用的效果是什么使它以动画方式显示(如地址簿所示),它是一个小窗口,以动画方式扩展到正确的大小。

  3. enter image description here

2 个答案:

答案 0 :(得分:2)

你说得对,这可能不是基于文档的应用程序,因为它们默认在新窗口中打开文档。

要像这样布局窗口,会有一个包含3个窗格的NSSplitView。每个窗格都可以选择包含从NSViewController加载的视图,这可以帮助保持代码模块化,但这取决于您尝试做的事情,如果这是合适的。

左侧窗格是NSOutlineView(一个NSTableView子类),中间是NSTableView,但我不确定如何创建右侧视图(许多自定义NSView和其他内容,可能是WebView

该弹出窗口选项窗口可能是NSPopover(其中包含NSViewController),但这只与OS X 10.7兼容,因此也可能完全自定义以实现向后兼容性和更容易的自定义。

另请注意,这是一个相当复杂的示例,您可能会提供许多自定义控件,这些控件可能比它们看起来更难以创建:

  • 要使左侧的大纲视图具有未读计数和图标(来自内存)未内置到AppKit中,所以自定义创建。要做到这一点,你需要对NSCell vs NSView有充分的理解,理想情况下还要了解Core Animation层支持的视图,以及用于不同方面的内容。

    < / LI>
  • 窗口的标题栏高于平时。这意味着如果不是从头开始创建整个窗口,开发人员可能不得不做一些疯狂的事情来实现它。

这只是一个开始。那里有许多非常好的设计,这是定制的,从头开始。

设计Mac应用程序有时很难。 AppKit非常古老(从NEXT时代开始),并且有很多遗留问题。另一方面,iOS上的UIKit相当不错 - 苹果公司清楚地从他们的过去中学到了很多东西。


我几乎没有触及所有这些背后的控制器和模型。有很多不同的方法可以做到这一点。对于持久性,您可以使用CoreData,sqlite,NSKeyedArchived,仅举几例。 Brent Simmons(另一位RSS阅读器的开发者,NetNewsWire)撰写了一些有趣的博客文章: http://inessential.com/2010/02/26/on_switching_away_from_core_data http://inessential.com/2011/09/22/core_data_revisited

您设计模型的方式&amp;控制器真的取决于具体问题。可可真的迫使你坚持使用MVC - 如果你不这样做,事情肯定会变得混乱。


我希望一切都有帮助!我真的只是在学习自己。

答案 1 :(得分:0)

Apple将此类应用程序设计称为单窗口,库 - (或“ shoebox ”)样式,并在文档中为此设计选择提供了许多建议。

(见Mac App Programming Guide