自定义 UITextField,不带参数初始化
Custom UITextField, init with no arguments
我有一个自定义 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()
不是指定的初始值设定项。我怎样才能做到这一点?
好吧,除非我公然遗漏了什么,否则您已将 class 声明为 class Textfield: UITextField
,并且根据您尝试创建对象的方式,您的 class 应该被定义为 class StandardField: UITextField
并且 class 不需要像 Leo 所说的任何初始化器。
class StandardTextField: UITextField {
//no initializers
}
您可能正在寻找方便的初始化程序。但是您需要为您的 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)
}
}
我有一个自定义 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()
不是指定的初始值设定项。我怎样才能做到这一点?
好吧,除非我公然遗漏了什么,否则您已将 class 声明为 class Textfield: UITextField
,并且根据您尝试创建对象的方式,您的 class 应该被定义为 class StandardField: UITextField
并且 class 不需要像 Leo 所说的任何初始化器。
class StandardTextField: UITextField {
//no initializers
}
您可能正在寻找方便的初始化程序。但是您需要为您的 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)
}
}