在NSViewController中是否存在viewcontroller包含的概念

时间:2013-01-09 14:13:06

标签: macos

在iOS中,你有一个View Containment的概念,在OSX中有这样的东西吗?

基本上我想创建多个nsviewcontroller,每个nsviewcontroller管理一个特定的视图。我有一个MasterViewController,左边有一个菜单(比如ITunes),每次用户点击左边的一个项目时,它会加载正确的nsviewcontroller来显示它的视图。

任何有关我需要的提示都表示赞赏

谢谢,

2 个答案:

答案 0 :(得分:1)

从OSX 10.10开始,请注意Storyboards and Controllers on OS X


注释

NSViewController基本上没有做任何事情(其他加载NIB)多年来,我很高兴看到它最终得到了关注。这里可可人群中的某些人对视图控制器编程风格持有冷淡的态度;我以前曾经问过这样的问题并且有#34;你是一个iOS新手来到Cocoa"响应。这是我从未理解过的东西,它是遏制和重用的绝佳模式。

答案 1 :(得分:0)

OS X和iOS之间的主要区别在于,在iOS设备上,您只有一个"窗口"。在OS X上,有些桌面可以包含许多窗口,您可以同时查看和交互。

一般来说,这听起来像是在尝试创建一个NSWindow,其中包含左栏选择列表的单列NSTableView,以及一些其他视图,它将在右侧显示选择的详细信息。将它们放置在垂直NSSplitView中是很常见的,因此用户可以调整它们的相对宽度,但它们也可以独立存在,作为窗口主视图中的两个单独的子视图。

您通常使用NSArrayController来管理列表内容并跟踪选择的特定项目。对于右侧的详细视图,您将使用单个NSView和NSControl子视图,这些子视图显示绑定到阵列控制器所选对象的值。

如果您的对象之间的数据结构不同,请根据需要交换或显示/隐藏特定所选对象所代表的不同类型数据的各种子视图。你可以使用" Conditional Sets Hidden"绑定选项,用于自动隐藏没有适用键控值的控件。

或者,如果列表中有固定数量的对象,并且它们的结构彼此完全不同,那么您可能希望使用具有单独选项卡的表NSTabView,每个选项卡都有自己的自定义视图你的对象观察列表中的选择何时发生变化,并相应地选择相应的选项卡。