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

Macos 开发多窗口Mac应用程序所需的建议,macos,cocoa,Macos,Cocoa,我已经读了好几本关于Mac开发的书,但是找不到我想要的信息 这些书都描述了如何制作浮动窗口或窗格,但从来没有提到如何在一个窗口中制作它们。下面是我希望创建的一个简化示例: 基本上有三个窗口,;一个选择器窗口,带有单选按钮,可选择当前正在使用的NSDocument,该窗口下方的一个窗口带有按钮,这些按钮在右侧显示不同的窗口,允许查看和操作某些数据 例如,每个NSDocument可能有一个颜色值,可以在单击视图a显示的窗口中设置,还有一些文本字符串,可以在单击视图B显示的窗口中设置 因此,问题是:

我已经读了好几本关于Mac开发的书,但是找不到我想要的信息

这些书都描述了如何制作浮动窗口或窗格,但从来没有提到如何在一个窗口中制作它们。下面是我希望创建的一个简化示例:

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

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

因此,问题是:

  • 对每个文档1和文档2使用单个NSDocument子类是否合适
  • 我应该使用哪些类来设置应用程序,如图所示?NSC窗口控制器?窗户?NSPanel
  • 我只是在寻找关于阅读内容的指导,所以任何指点都很感激

    编辑:

    为了进一步澄清这一点,我希望在按钮所在的位置有一个表视图(视图a和B),单击它们将导致其他窗口/视图更改其内容

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


    单选按钮仅用于说明我需要多个文档。我想我需要不止一个人来处理这个?或者我应该把它们都放在一个文档中?不知何故,这似乎并不正确。

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

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

    • 您有一个带有窗口控制器的窗口。如果您在Xcode中选择基于文档的应用程序模板,Xcode将生成
      NSDocument
      的子类,您可以将其用作窗口控制器(或者选择使用核心数据,Xcode将生成
      NSPersistentDocument
      的子类,其中包含访问核心数据以实现文档持久性所需的所有提示)

    回到你的问题上来:

    1:是的,但要看你的要求。如果1号文件与2号文件完全不同,您可能需要重新评估。例如,文档1可能具有与文档2完全不同的持久性需求


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

    我知道这是个老问题,但一种方法是使用ContainerViews,并将其嵌入序列设置为所需的视图控制器。

    您询问的是多窗口应用程序,但从您的绘图中,我得到的印象是,您希望开发一个多视图应用程序,在单个窗口的边界内处理所有视图……请参阅上面的编辑。是的,你的解释听起来很对。但我想我需要多个控制器,或者不需要?见我的答案。您需要多个NSViewController。非常感谢您的建议。这很有帮助,因为我找不到这方面的信息。