如何创建对应于包含与父模型类对应的视图元素的模型子类的视图?

时间:2010-09-07 01:44:43

标签: objective-c cocoa interface-builder

我有一些UI元素将与其他UI元素共享公共部分。它们对应于继承层次结构中的模型对象。

作为一个例子,假设可以打开/关闭所有图层。所有WaveLayers都是另外定义.wav文件名的图层。 WaveLayer的一个特定的具体子类叫做GroovyLayer,它需要额外的参数。

在视觉上我想要一个长面板,其中顶部部分包含常规图层UI,下一部分包含特定于WaveLayer的UI,最后一部分包含特定于GroovyLayer的UI。可能有10个左右的具体子类,每个子类共享与Layer和WaveLayer相对应的相同顶部。

我应该如何在InterfaceBuilder中进行设置?我是从顶部开始(使用子类的占位符)还是从底部开始(使用父类的占位符)?我应该如何在InterfaceBuilder中设置这些占位符并在适当的时间替换正确的NSView?

通过在IB中使用空白的“自定义视图”并将其绑定到我的控制器类中的插座,然后将该视图替换为另一个视图,将该视图替换为另一个视图NIB,但这似乎不太优雅,因为我的控制器随后带有“旧视图”和“新视图”成员......

1 个答案:

答案 0 :(得分:0)

按照您的意愿布置视图。然后选择代表子类的自定义视图,并在检查器中设置其类名

至于是否从单独的xib文件加载视图,我认为这样做太过分了。根据您的描述,这些视图始终可以一起显示,因此除了从单个文件加载它们的复杂性之外,您什么也得不到。

您似乎缺少的技巧是将自定义视图的类名设置为子类的类名。