如何在初始化UIView时发送参数



之前有人问过这个问题,但没有一个连贯的简单答案。

通常你会这样做:

override init (frame : CGRect)
{
    super.init(frame : frame)

我需要做(我不能,因为没有这样的功能可以覆盖(:

override init (frame : CGRect, number:Int)
{
    super.init(frame : frame)

这显然给出了一些错误。有没有办法像往常一样创建实例并仍然传递参数?

要满足所有规则和要求,您必须编写

class MyView : UIView {
    var number : Int
    override convenience init(frame: CGRect)
    {
        self.init(frame:frame, number: 0)
    }
    init(frame: CGRect, number: Int)
    {
        self.number = number
        super.init(frame: frame)
    }
    required init?(coder aDecoder: NSCoder) {
        number = 0
        super.init(coder : aDecoder)
    }
}

以通常/指定的方式初始化视图并在额外的行中设置属性可能更容易。

您指定的那个没有覆盖方法,只需这样编写即可

init(frame : CGRect, number: Int) {
    super.init(frame : frame)
}

最新更新