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

时间:2012-03-14 00:41:53

标签: macos cocoa

我一直在阅读有关Mac开发的几本书,但找不到我正在寻找的信息。

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

example

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

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

所以问题是:

  1. 为每个Doc#1和Doc#2使用单个NSDocument子类是否合适?
  2. 我应该使用哪些类来设置应用程序,如图所示? NSWindowController? NSWindow? NSPanel?
  3. 我只是在寻找有关阅读内容的指导,所以任何指针都会受到赞赏。

    编辑:

    为了进一步说明这一点,我想要一个表格视图,其中按钮是(查看A& B),通过点击它们,它们将导致另一个窗口/视图改变它的内容。

    就像iPad设置应用程序中的拆分视图一样,左侧有一个表格视图,当按下它时,右侧会发生变化。

    单选按钮仅用于说明我需要多个文档。我猜我需要不止一个来处理这个问题?或许我应该将它们全部放在一个NSDocument中?不知何故,这似乎不对。

2 个答案:

答案 0 :(得分:2)

要实现您想要的功能,您需要一个窗口(NSWindow),一个窗口控制器和各种视图,每个视图都有自己的视图控制器。您可以通过多种方式进行设置,具体取决于您的要求:

  • 您至少有3个视图(NSView个实例):一个用于选择文档类,一个用于视图选择,一个用于内容。每个视图由视图控制器(NSViewController的实例)控制。此外,您可以选择在拆分视图(NSSplitView)中包装视图,以便用户可以调整每个视图可用的空间。

  • 您有一个带窗口控制器的窗口。如果您在Xcode中选择基于文档的应用程序模板,Xcode将生成NSDocument的子类,您可以将其用作窗口控制器(或选择使用Core Data和Xcode将生成NSPersistentDocument的子类您需要访问Core Data以获取文档持久性的所有花哨功能。

回到你的问题:

1:是的,但取决于您的要求。如果Doc#1与Doc#2完全不同,那么您可能需要重新评估。例如,Doc#1可能具有与#2完全不同的持久性要求。

2:这里没有单一的方案,但是对我有用的方法:为基于文档的应用程序(带或不带Core Data)获取项目模板。使用生成的NSDocument(或NSPersistentDocument)子类作为窗口控制器。使用NSView在您的窗口中实现视图,其中每个视图由其自己的控制器管理,该控制器是NSViewController的实例。

答案 1 :(得分:0)

我知道这是一个老问题,但是如何使用它是一种方法:ContainerViews并将它们的嵌入segue设置为你想要的视图控制器。