我已经阅读了几本有关 Mac 开发的书籍,但找不到我要查找的信息。
这些书都描述了如何制作 float 窗口或 Pane ,但从未提及如何将它们全部制作在一个窗口中。我想要创建的简化示例如下所示:
基本上会有三个窗口;带有单选按钮的选择器窗口,用于选择当前正在使用的 NSDocument,其下方的窗口带有按钮,右侧显示不同的窗口,允许查看和操作某些数据。
例如,每个 NSDocument 可能有一个可以在单击 View A 显示的窗口中设置的颜色值,以及可以在单击 View B 显示的窗口中设置的一些文本字符串。
所以问题是:
- 为每个 Doc#1 和 Doc#2 使用单个 NSDocument 子类是否合适?
- 我应该使用哪些类来设置如图所示的应用程序? NSWindowController? NS窗口? NSPanel?
我只是在寻找有关阅读内容的指导,因此我们将不胜感激。
编辑:
为了进一步澄清这一点,我想要一个表格 View ,其中有按钮( View A 和 B),通过单击它们,它们将导致其他窗口/ View 更改其内容。
这就像 iPad 设置应用程序中的 Split View,左侧有一个表格 View ,按下后右侧会发生变化。
单选按钮仅用于说明我想要多个文档。我猜我需要多个来处理这个问题?或者也许我应该将它们全部放在一个 NSDocument 中?不知怎的,这似乎不对。
最佳答案
要实现您想要的效果,您需要一个窗口 (NSWindow
)、一个窗口 Controller 和各种 View ,每个 View 都有自己的 View Controller 。您可以通过多种方式进行设置,具体取决于您的要求:
您至少有 3 个 View (
NSView
的实例):一个用于选择文档类,一个用于选择 View ,一个用于内容。每个 View 都由 View Controller (NSViewController
的实例)控制。此外,您可以选择将 View 包装在分割 View (NSSplitView
) 中,以便您的用户可以调整每个 View 可用的空间大小。您有一个带有窗口 Controller 的窗口。如果您在 Xcode 中选择基于文档的应用程序模板,Xcode 将生成
NSDocument
的子类,您可以将其用作窗口 Controller (或者选择使用 Core Data,Xcode 将生成NSPersistentDocument
具有访问核心数据以实现文档持久性所需的所有功能)。
回到你的问题:
1:是的,但取决于您的要求。如果 Doc#1 与 Doc#2 完全不同,那么您可能需要重新评估。例如,文档 #1 可能具有与文档 #2 完全不同的持久性要求。
2:这里没有单一的场景,但有一个对我有用的场景:采用基于文档的应用程序的项目模板(带或不带核心数据)。使用生成的 NSDocument
(或 NSPersistentDocument
)子类作为窗口 Controller 。使用 NSView
实现窗口中的 View ,其中每个 View 都由其自己的 Controller 管理,该 Controller 是 NSViewController
的实例。
关于macos - 开发多窗口 Mac 应用程序所需的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9694380/