我正在开发一个使用 iTunes 风格的源列表的 Cocoa 桌面应用程序:源列表中的不同元素导致主要内容区域显示不同的视图。
内容区域完全由 (vertical) 填充NSSplitView
;左侧是NSOutlineView
源列表。当用户选择左侧的项目时,相关视图会出现在拆分器的右侧。
NSTabView
我可以通过将所有内容放在一个 NIB 文件中并在拆分器的右侧放置一个无边框来使其工作得足够好;要切换视图,我只需要更改选定的选项卡。但是将所有视图放在一个 NIB 中是不好的做法,所以我试图将每个子视图移动到它们自己的 NIB 文件中。
我对这个过程的大部分都有一个很好的想法——我NSViewController
为每个视图创建了一个子类(EntityDetailViewController
、GroupDetailViewController
等),将每个新 NIB 的文件所有者设置为相关的控制器类,view
在每个视图中设置连接NIB,并重新设计了绑定。我不知道如何实际更改屏幕上显示的子视图。
我尝试使用NSView
右侧的默认泛型并向其发送addSubview:
消息;我尝试将其作为第一个子视图连接并调用
NSView *newSubview = /* get subview from the new subview controller */
[[subview superview] replaceSubview:subview with:newSubview];
[self setSubview:newSubview];
但一切都只是让空间空白。如何显示从单独的 NIB 加载的子视图?