gpt4 book ai didi

xcode - 高级应用程序设计/架构

转载 作者:行者123 更新时间:2023-12-03 16:14:11 28 4
gpt4 key购买 nike

在过去的几年里,我做了相当多的 iOS 开发,所以我非常熟悉 iOS 架构和应用程序设计(一切都是一个 ViewController,您可以将其推送、弹出或粘贴到选项卡栏中)。我最近开始探索正确的 Mac 应用程序开发,但感到有点迷失。我真的只是想进行一次健全性检查,也许还可以就构建这样的应用程序的正确方法提供一些建议:

我想构建一个库式的单窗口应用程序,它将在其操作过程中生成额外的窗口,但不是完整的文档。主窗口的布局与 OS X Lion 的 Mail.app 非常相似,具有三宽分割 View ,其中包含:

  1. 来源列表,或高级主题选择
  2. 与第一个 Pane 中所选主题相关的项目的 ListView
  3. 详细信息 View ,显示中间 Pane 中所选对象的详细信息

就像我说的,就外观而言,与 Mail.app 非常相似。

我的问题实际上是如何从 XCode 内部将所有这些粘合在一起。到目前为止,我的困惑在于:

  • 默认项目生成一个带有主菜单和窗口的 NIB。我喜欢封装功能,所以我应该为此窗口创建一个窗口 Controller 并以某种方式将其连接到 Interface Builder 中,还是特定于窗口的功能属于其他地方?

  • 如果可能的话,我希望三个 Pane 中的每一个都是单独的 View Controller 。我创建了三个 NSViewController 子类(XCode 自动生成 NIB),并添加(到主菜单/窗口 NIB)指定每个类的 View Controller 对象,将每个类的 view 属性连接到三个 view 之一。 code>Custom View 通用 NSView 对象我放入 NSSplitView 中。当我尝试设置每个 View Controller 的 NIB 时,只有主菜单/窗口 NIB 出现在下拉列表中,并且手动键入所需的 NIB 似乎没有效果(运行应用程序时 View 的内容实际上并未出现) 。这让我觉得我做错了什么。

  • 我对前两个 Pane 应该使用什么类型的 View 有点模糊。显然,我将为最后一个 Pane 构建一个自定义 Pane ,但看起来前两个 Pane 应该已经存在于 Cocoa 框架中。

无论如何,如果我做的事情完全错误,请不要费心解决我的问题;只是告诉我我应该做什么。我想我只需要一位合适的 Mac 开发人员来为我指明正确的方向。

最佳答案

关于你的第一个问题,你不需要使用Apple在MainMenu.xib中提供的主窗口。如果需要,您可以从 Nib 中删除该窗口,然后实例化 NSWindowController在你的applicationDidFinishLaunching:然后加载并控制主窗口的委托(delegate)方法。

你肯定对 NSViewController 感到困惑,这并不奇怪,因为您可能会认为它的工作原理类似于 UIViewController

事实上,NSViewControllerUIViewController 完全不同并且没有相同级别的 Interface Builder 支持。例如,您不能将 View Controller 放置在 IB 的窗口中,而这是 iOS 上的标准做法。 NSViewController是 Mac 上相对较新的类,通常使用它以编程方式加载 View 并管理 View 内容。

最接近映射到 UIViewController 的类在 Mac 上是 NSWindowController 。这比 NSViewController 存在的时间要长得多。事实上,许多 Mac 应用程序不使用 NSViewController完全没有。

通常,应用程序中的每个窗口都应该有一个窗口 Controller 来管理它。您可以使用 NSWindowController 的子类处理每个窗口的许多功能。

如果您想使用NSViewController ,那么您应该使用窗口 Controller 来管理这些 View Controller 对象。由于上述缺乏 Interface Builder 支持,这通常以编程方式完成。每个NSViewController实例从特定的 nib 文件加载其 View 。您通常不会在 Interface Builder 中添加 View Controller 。

对于您的源列表,您通常会使用 NSOutlineView如果您有多个部分或 NSTableView 。每当您需要项目列表时,就会使用这两个对象。 NSOutlineView是分层的,而 NSTableView是平坦的。

我希望这会有所帮助。

关于xcode - 高级应用程序设计/架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9403743/

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