Swift 自定义UITextField,init,不带参数
我有一个自定义的Swift 自定义UITextField,init,不带参数,swift,uitextfield,Swift,Uitextfield,我有一个自定义的UITextField,我试图像这样声明它: let textField = StandardTextField() // pretty much like UITextField() 我的自定义文本字段如下所示: class StandardTextField: UITextField { init(frame: CGRect, size: CGFloat) { super.init(frame: frame) // some in
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 Textfield:UITextField
,并且根据您试图创建对象的方式,您的类应定义为class StandardField:UITextField
,并且该类不需要任何初始值设定项,如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)
}
}
抱歉,在提出此问题时,我更改了名称。我已经解决了这个问题。@Laap您所需要做的就是删除init和必需的initYep,我刚刚在操场上测试过。我将更新我的答案。@LeoDabus不过,我以后应该如何进行自定义初始化呢?比如设置字体和背景色等(这就是我创建这个自定义文本字段的目的,所以我不必每次都重复)@LeoDabus谢谢你的提示。我试图覆盖它,但它给了我一个关于超类UIView的getter的错误。你试过我的建议吗?对不起,我现在不在城里。谢谢你的帮助,我一回到家就会努力:)我不想。我正在使用自动布局。如何忽略愚蠢的框架,让autolayout为我找出框架?我不想设置框架。你需要一个框架来开始。它可以是任何尺寸