尝试围绕正确的MVC理论,我在模型或视图中声明自定义类型的位置时有点难过。
我有一个控制面板,其中一组模型参数由我的自定义滑块控制。
// the (simplified) model
class RGParameter {
var value: Int
var name: String
var type: SliderType
}
我制作了一个自定义滑块,根据滑块的类型显示不同的轨道图像。
class RGSlider: UISlider {
var type: SliderType {
didSet{
changeTrackImage()
}
}
func init(frameRect: CGRect, theType: SliderType) {
}
func changeTrackImage() {
var image: UIImage
switch(type) {
case .Hue: image = hueImage
case .Sat: image = satImage
// etc
}
// put image in track
}
}
在某个地方,我需要这个:
enum SliderType {
case Hue
case Sat
case Lum
case Brightness
case Contrast
}
如果我将SliderType定义放在模型中,滑块UI就不会自行编译,如果我将SliderType定义放在滑块中,模型就不会自行编译。在这一点上,我试图分别处理模型和视图。
我错过了一些基本的东西......
顺便说一句,即使这主要是一个概念性的问题,我也标记了Swift,因为我正在使用它并认为可能有一种优雅的Swift方式。答案 0 :(得分:0)
我认为模型和视图都包含的类型没有任何问题,尤其是枚举,它实际上是应用程序词汇表的一部分。他们都知道“整数”,对吧? SliderType
只是特定于应用的版本。
但是,如果您这样做,您可能希望从其名称中删除“滑块”一词,并使其更通用,例如VisualParameterType
。将它放入自己的头文件中并将其包含在两个位置,以便它们可以在语义上进行通信。