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为我找出框架?我不想设置框架。你需要一个框架来开始。它可以是任何尺寸