以前曾被问过但没有一致的简单回答。
通常你这样做:
override init (frame : CGRect)
{
super.init(frame : frame)
我需要要做(我不能,因为没有这样的功能可以覆盖):
override init (frame : CGRect, number:Int)
{
super.init(frame : frame)
这显然会带来一些错误。 有没有办法像往常一样创建实例并仍然传递参数?
答案 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)
}