自定义 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)
    }
}