Objective c 主详图界面中详图的多视图

Objective c 主详图界面中详图的多视图,objective-c,macos,cocoa,master-detail,Objective C,Macos,Cocoa,Master Detail,我正在为一个应用程序构建一个首选项窗格,用户可以在其中将Web服务添加到列表中(在左侧的tableview中),并在右侧显示一个表单,用户可以在其中编辑Web服务的配置选项(如用户名或密码、API密钥或tumblr博客名等)我想对于不同类型的服务我需要不同的视图(可能有不同的验证逻辑等等) 我的问题是,实现这一目标的最佳方式是什么 我所做的:我有一个NSSplitView和一个NSTableView。我有一个NSArrayController,它的内容绑定到NSUserDefaultsContr

我正在为一个应用程序构建一个首选项窗格,用户可以在其中将Web服务添加到列表中(在左侧的tableview中),并在右侧显示一个表单,用户可以在其中编辑Web服务的配置选项(如用户名或密码、API密钥或tumblr博客名等)我想对于不同类型的服务我需要不同的视图(可能有不同的验证逻辑等等)

我的问题是,实现这一目标的最佳方式是什么

我所做的:我有一个
NSSplitView
和一个
NSTableView
。我有一个
NSArrayController
,它的
内容
绑定到
NSUserDefaultsController
中的相应键,而
NSTableView
绑定到它的
排列对象
选择索引
。接下来,我在右侧添加了一个
NSTabView
,它的
selectedIndex
绑定到
NSArrayController
的selectedIndex,并尝试通过编程将适当的视图(我在IB中创建为单独的自定义视图)作为选项卡插入


在我看来,这似乎不是最好的办法。我也不知道如何绑定细节视图中的字段——这里甚至可以使用绑定吗?如何解决此问题?

为检查器(
inspectorView
)创建一个空白的
NSView
,而不是
NSTabView
)。同样的想法,但简单一点

tableViewSelectionDidChange
中,编写如下内容:

newView = ...;

if (inspectorView != [customInspectorView superview]) {
    NSView *oldView = [[inspectorView subviews] objectAtIndex:0];
    [inspectorView replaceSubview:oldView with:newView];
}

您可以将字段绑定到
服务raycontroller.selection.username
等。

为检查器(
检查器视图
)创建一个空白的
NSView
)。同样的想法,但简单一点

tableViewSelectionDidChange
中,编写如下内容:

newView = ...;

if (inspectorView != [customInspectorView superview]) {
    NSView *oldView = [[inspectorView subviews] objectAtIndex:0];
    [inspectorView replaceSubview:oldView with:newView];
}
您可以将字段绑定到
服务raycontroller.selection.username