2

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

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

任何实现我需要的技巧都值得赞赏

谢谢,

4

2 回答 2

1

As of OSX 10.10 there is, watch Storyboards and Controllers on OS X.


Comment.

NSViewController did basically nothing (other that load NIBs) for years, I'm glad to see that it finally got from attention. Certain people in the Cocoa crowd here have a snotty attitude about the view controller programming style; I've asked questions like this before and had the "are you a iOS newbie coming to Cocoa" response. That's something that I never understood, it's a great model for containment, and reuse.

于 2014-06-17T13:43:29.620 回答
0

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

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

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

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

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

于 2014-07-04T18:06:57.270 回答