扩展UIControl以为持久性分配启动值

时间:2017-07-04 15:04:53

标签: ios swift uicontrol

的StackOverflow,

我正在努力扩展UIControl以为其自身分配单个值。这是实现的,因此它可以在启动时为持久性分配值。我的目标是尽可能地做到这一点,因此它很容易扩展。我的方法的主要组成部分之一是打开UIControl的类型。例如,如果它是一个开关我需要分配一个bool,如果是一个文本视图我需要分配一个字符串。然而,它给了我一些错误,如下所示:

  

来自' UIControl'到不相关的类型' UITextView'总是失败

     

Bool'类型的表达模式无法匹配类型的值   ' UIControl'

我知道这段代码完全错误,但我没有找到其他办法。你有什么建议实施这种方法?我是在正确的轨道上吗?

extension UIControl {
    func assignValue(value: Any?){
        switch(self){
        case self is UISwitch:
            (self as! UISwitch).isOn = value as! Bool
        case self is UITextView:
            (self as! UITextView).text = value as! String
        default:
            break
        }
    }
}

谢谢, 宏

1 个答案:

答案 0 :(得分:0)

self.hello(),

可以通过将true与对象类型为UISwitch,UITextView等的情况匹配来修复语法错误。所有UIControl元素都将继承此方法。单独扩展实现的每个UIElements可能会更好,因此它们并不都具有该功能。

extension UIControl {
    func assignValue(object: AnyObject, value: Any){
        switch(true){
        case object is UISwitch:
            (object as! UISwitch).isOn = value as! Bool
        case object is UITextView:
            (object as! UITextView).text = value as! String
        default:
            break
        }
    }
}

self.thanks()