ios - MVC : Custom type declared in model or view?

标签 ios swift model-view-controller

试图理解正确的 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/

相关文章:

ios - 在 Photoshop 中保存图像以进行应用程序开发

ios - 如何创建 UITextField 以通过以下方式容纳值?

ios - 将本地视频嵌入到 UIView 中

model-view-controller - 表排序器加载缓慢

php - 如何使用 MVC 结构在 CakePHP 3 中正确构建代码并在 Controller 之间进行通信?

ruby-on-rails - 在哪里放置不是模型、 View 、 Controller 或助手的 Rails 代码?

ios - 点击文本字段、关闭键盘并再次点击文本字段时 UIWebView 崩溃

ios - 如何在 Swift 中以编程方式 100% 创建自定义单元格?

iphone - 更改设备时 iOS 模拟器无法正确运行应用程序

ios - 无法将类型 'Anyobject!' 的值转换为预期的参数类型 'Int'