macos - 开发多窗口 Mac 应用程序所需的建议

标签 macos cocoa

我已经阅读了几本有关 Mac 开发的书籍,但找不到我要查找的信息。

这些书都描述了如何制作 float 窗口或 Pane ,但从未提及如何将它们全部制作在一个窗口中。我想要创建的简化示例如下所示:

example

基本上会有三个窗口;带有单选按钮的选择器窗口,用于选择当前正在使用的 NSDocument,其下方的窗口带有按钮,右侧显示不同的窗口,允许查看和操作某些数据。

例如,每个 NSDocument 可能有一个可以在单击 View A 显示的窗口中设置的颜色值,以及可以在单击 View B 显示的窗口中设置的一些文本字符串。

所以问题是:

  1. 为每个 Doc#1 和 Doc#2 使用单个 NSDocument 子类是否合适?
  2. 我应该使用哪些类来设置如图所示的应用程序? 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/

相关文章:

macOS 辅助功能检查器不适用于 Slack

macos - NSUserNotification 可定制应用程序图标?

objective-c - 如何更改 NSOutlineView 中节点的样式?

ios - Whatsapp 消息布局 - 时间和消息在同一行

cocoa - NSArray 中的 NSArray。指针问题?

Cocoa:如何在不按 Enter 的情况下让文本字段发送操作(用户输入的内容)

macos - 有没有一种简单的方法来测量我的 Mac 应用程序的 FPS?

php - 如何在 Mac OS X 10.6.6 上启用 php-gmp? (没有macports)

android - 为什么android sdk安装失败?

c++ - 在 Mac OS X 中模拟按键事件