gpt4 book ai didi

objective-c - Mac 应用程序的一般设计,基于文档还是?

转载 作者:行者123 更新时间:2023-12-03 17:05:00 26 4
gpt4 key购买 nike

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

这种类型的 Cocoa 应用程序会是什么样的控件/架构?

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

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

从我现在的情况来看,我会这样描述:

如果有人能为我提供此类应用程序的高级设计的详细概述,即:面板数量、使用的 View 、控件、 Controller 等,我将不胜感激?

另外,还有一些简单的子问题:

  1. 左 Pane 中的菜单控件是什么类型,然后展开并显示子元素?

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

enter image description here

最佳答案

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

要像这样布局窗口,需要有一个包含 3 个 Pane 的 NSSplitView。每个 Pane 都可以选择包含从 NSViewController 加载的 View ,这有助于保持代码模块化,但这取决于您想要执行的操作(如果合适)。

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

该弹出选项窗口可能是一个 NSPopover (其中包含一个 NSViewController),但它仅与 OS X 10.7 兼容,因此也可能完全自定义以实现向后兼容性以及更轻松的定制。

另请注意,这是您给出的一个相当复杂的示例,其中有许多自定义控件,创建起来可能比看起来更难:

  • 让左侧的大纲 View 具有未读计数和图标(从内存中)并没有内置到 AppKit 中,因此都是自定义创建的。要执行此类操作,您需要对 NSCellNSView 有深入的了解,并且最好还了解核心动画层支持的 View ,以及在不同方面使用什么.

  • 窗口的标题栏比平常更高。这意味着开发人员可能必须做一些疯狂的事情才能使其正常工作,如果不是从头开始创建整个窗口。

这只是开始。那里有很多非常好的设计,都是定制的并且是从头开始完成的。

设计 Mac 应用程序有时可能很困难。 AppKit 已经相当老了(从 future 几天开始),并且有很多遗留问题。另一方面,iOS 上的 UIKit 相当不错 - Apple 显然从过去吸取了教训,并使事情变得更好。

<小时/>

我几乎没有触及这一切背后的 Controller 和模型。有很多不同的方法可以做到这一点。为了持久化,您可以使用 CoreData、sqlite、NSKeyedArchived 等。 Brent Simmons(另一个 RSS 阅读器 NetNewsWire 的前开发者)就此写了一些有趣的博客文章: http://inessential.com/2010/02/26/on_switching_away_from_core_datahttp://inessential.com/2011/09/22/core_data_revisited

设计模型和 Controller 的方式实际上取决于具体问题。不过,Cocoa 确实迫使您坚持 MVC - 如果您不这样做,事情肯定会变得一团糟。

<小时/>

希望对大家有帮助!我也只是在自学而已。

关于objective-c - Mac 应用程序的一般设计,基于文档还是?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11422001/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com