使用参数初始化UIView?

时间:2017-11-23 01:20:52

标签: swift

我的 override init (frame : CGRect) { super.init(frame : frame) } 看起来像这样:

 override init (frame : CGRect, number:Int)

我想添加一个参数,例如:

init

这样做的正确方法是什么,我可以<div class="col-12 mb-sm-3"></div> 并在一行中发送arg?

2 个答案:

答案 0 :(得分:1)

您可以这样做:

class CustomView: UIView{

var number: Int

init(frame : CGRect, number: Int) {

    self.number = number
    print("Number = \(number)")
    super.init(frame: frame)
}

required init?(coder aDecoder: NSCoder) {

    fatalError("init(coder:) has not been implemented")

   }

}

然后将其添加到堆栈中,如下所示:

  let viewToAdd = CustomView(frame: CGRect(x: 20, y: 72, width: 100 , height: 100), number: 1)
  viewToAdd.backgroundColor = .red
  self.view.addSubview(viewToAdd)

答案 1 :(得分:1)

您可以将您的类定义为:

class MyView: UIView {
    let number: Int

    init(frame: CGRect, number: Int) {
        self.number = number

        super.init(frame: frame)
    }

    required init?(coder aDecoder: NSCoder) {
        // Need to initialize the number property here. Do so appropriately.
        super.init(coder: aDecoder)
    }
}

使用number属性只是一个例子。做你真正需要的。

你会创建一个像这样的实例:

let mv = MyView(frame: .zero, number: 42)

显然你会传递一个有用的框架。

相关问题