自定义UITextField,init没有参数

时间:2015-12-10 22:55:00

标签: swift uitextfield

我有一个自定义UITextField,我试图宣布它为:

let textField = StandardTextField() // pretty much like UITextField()

我的自定义文字字段如下:

class StandardTextField: UITextField {

    init(frame: CGRect, size: CGFloat) {
        super.init(frame: frame)

        // some initialization
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }
}

这给了我一个错误,因为TextField没有没有参数的初始化程序。我尝试添加:

init() {
    super.init()
}

但这是不可能的,因为super.init()不是指定的初始值设定项。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

您可能正在寻找便利初始化程序。但是您需要为UITextField定义默认帧大小。试试这样:

class StandardTextField: UITextField {
    convenience init() {
        self.init(frame: CGRect(x: 0, y: 0, width: 200, height: 50))
        // some initialisation for init with no arguments
    }
    override init(frame: CGRect) {
        super.init(frame: frame)
        //  some initialisation for init with frame
    }
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }
}

答案 1 :(得分:0)

除非我公然遗漏某些内容,否则您已宣布自己的课程为class Textfield: UITextField,并且根据您尝试创建对象的方式,您的课程应定义为{ Leo说,{1}}并且班级不需要任何初始化器。

class StandardField: UITextField