2012-03-14 51 views
3

我一直在阅读关于Mac开发的几本书,但是找不到我要找的信息。开发多窗口Mac应用程序需要的建议

这些书都描述了如何制作浮动窗口或窗格,但从未提及如何在一个窗口中制作它们。什么我希望创建一个简单的例子如下:

example

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

对于例如,每个NSDocument可以具有能够在通过点击视图A中所示的窗口中设置的颜色值,并且可以显示在窗口中设置一些文本串通过点击视图B.

所以问题是:

  1. 对每个Doc#1和Doc#2使用单个NSDocument子类是否合适?
  2. 我应该使用哪些类来设置应用程序? NSWindowController? NSWindow? NSPanel?

我只是在寻找什么读取指导,所以任何指针都赞赏。

编辑:

为了进一步阐明这一点,我想有在按钮(视图A & B)一个表视图,并通过点击他们,他们都将导致其他窗口/视图改变它的内容。

这就像iPad设置应用程序中的分割视图,左侧有一个表格视图,当它被按下时,右侧会改变。

单选按钮仅用于说明我想要多个文档。我猜我需要一个以上来处理这个问题?或者,我应该把它们全部放在一个NSDocument中?不知何故,这看起来不正确。

+1

您正在询问关于您的绘图中的多窗口应用程序我得到的印象是您希望开发一个多视图应用程序,并在单个窗口的边界内处理所有视图... – Roger 2012-03-14 01:50:00

+0

请参阅上面的我的编辑。是的,你的解释听起来很正确。但我认为我需要多个NSWindowControllers,或者不需要? – TigerCoding 2012-03-14 03:57:04

+0

看到我的答案。你需要多个NSViewController。 – Roger 2012-03-14 16:39:36

回答

2

为了实现你想要的,你需要一个窗口(NSWindow),一个窗口控制器和各自的视图,每个窗口都有自己的视图控制器。有几种方法,你可以设置它,这完全取决于你的需求:

  • 你必须至少3次(中NSView实例):一个文档类的选择,一个用于视图选择和一个内容。每个视图由视图控制器控制(NSViewController的实例)。此外,您可以选择将视图封装在拆分视图(NSSplitView)中,以便用户可以调整每个视图可用的房地产的大小。

  • 你有一个窗口与窗口控制器。如果您在Xcode中选择基于文档的应用程序模板,Xcode将生成NSDocument的子类,您可以将其用作窗口控制器(或者选择使用核心数据,Xcode将生成一个NSPersistentDocument的子类,并带有需要访问的所有铃声和哨子核心数据文件持久性)。

所以要回到你的问题:

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

2:这里没有一个单一的场景,但有一个适合我的场景:以基于文档的应用程序(有或没有核心数据)为基础的项目模板。使用生成的NSDocument(或NSPersistentDocument)子类作为窗口控制器。使用NSView在您的窗口中实现视图,其中每个视图由其自己的控制器管理,该控制器是NSViewController的实例。

+0

非常感谢您的建议。它有很大的帮助,因为我找不到这方面的信息。 – TigerCoding 2012-03-15 04:17:44

0

我知道这是一个古老的问题,但一种方法来做到这一点,你想如何使用:ContainerViews和设置他们的嵌入segue成为你想要的视图控制器。