我有一个自定义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()
不是指定的初始值设定项。我怎样才能做到这一点?
答案 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