试图理解正确的 MVC 理论,但当涉及到在模型或 View 中声明自定义类型的位置时,我有点困惑。
我有一个控制面板,其中控制了我的自定义 slider 的一堆模型参数。
// the (simplified) model
class RGParameter {
var value: Int
var name: String
var type: SliderType
}
我制作了一个自定义 slider ,根据 slider 的类型显示不同的轨道图像。
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 定义放入模型中, slider UI 将不会自行编译,如果我将 SliderType 定义放入 slider 中,模型将不会自行编译。此时,我正在尝试分别处理模型和 View 。
我缺少一些基本的东西......
顺便说一句,尽管这主要是一个概念性问题,但我标记了 Swift,因为这就是我正在使用的,并且认为也许可能有一种优雅的 Swift 方式来做到这一点。
最佳答案
我不认为模型和 View 都包含一个类型有什么问题,特别是枚举,它实际上是应用程序词汇表的一部分。他们都知道“整数”,对吗? SliderType
只是其特定于应用程序的版本。
但是,如果您这样做,您可能需要从其名称中删除“slider”一词,并使其更加通用,例如 VisualParameterType
。将其放入自己的头文件中并将其包含在两个位置中,以便它们可以进行语义通信。
关于ios - MVC : Custom type declared in model or view?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32743728/