我有一些UI元素将与其他UI元素共享公共部分。它们对应于继承层次结构中的模型对象。
作为一个例子,假设可以打开/关闭所有图层。所有WaveLayers都是另外定义.wav文件名的图层。 WaveLayer的一个特定的具体子类叫做GroovyLayer,它需要额外的参数。
在视觉上我想要一个长面板,其中顶部部分包含常规图层UI,下一部分包含特定于WaveLayer的UI,最后一部分包含特定于GroovyLayer的UI。可能有10个左右的具体子类,每个子类共享与Layer和WaveLayer相对应的相同顶部。
我应该如何在InterfaceBuilder中进行设置?我是从顶部开始(使用子类的占位符)还是从底部开始(使用父类的占位符)?我应该如何在InterfaceBuilder中设置这些占位符并在适当的时间替换正确的NSView?
通过在IB中使用空白的“自定义视图”并将其绑定到我的控制器类中的插座,然后将该视图替换为另一个视图,将该视图替换为另一个视图NIB,但这似乎不太优雅,因为我的控制器随后带有“旧视图”和“新视图”成员......
答案 0 :(得分:0)
按照您的意愿布置视图。然后选择代表子类的自定义视图,并在检查器中设置其类名。
至于是否从单独的xib文件加载视图,我认为这样做太过分了。根据您的描述,这些视图始终可以一起显示,因此除了从单个文件加载它们的复杂性之外,您什么也得不到。
您似乎缺少的技巧是将自定义视图的类名设置为子类的类名。