如何在init UIView

时间:2017-04-10 12:01:12

标签: swift

以前曾被问过但没有一致的简单回答。

通常你这样做:

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

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

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

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

2 个答案:

答案 0 :(得分:2)

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

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)
    }
}

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

答案 1 :(得分:1)

您指定的方法没有覆盖方法,只需像这样写

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