【发布时间】:2015-05-31 22:01:57
【问题描述】:
我希望以编程方式初始化一个UIView 子类,它应该用一个 Int 来初始化。我想做这样的事情:
class OneFingerView: UIView
{
let id: Int
init(id: Int)
{
self.id = id
super.init()
}
required init(coder aDecoder: NSCoder)
{
super.init(coder: aDecoder)
}
}
但是报错
必须调用超类 UIView 的指定初始化器
我之前的尝试如下:
class OneFingerView: UIView
{
let id: Int
var delegate: OneFingerViewProtocol? = nil
init(id: Int, frame: CGRect)
{
self.id = id
super.init(frame: frame)
}
override init(frame: CGRect)
{
super.init(frame: frame)
}
}
然后我得到一个我没有实现 init(coder:) 的错误。
我该怎么做?无论我采取哪种方法,似乎都会出现各种错误的无限循环。
【问题讨论】:
-
您是否查看过这个问题:stackoverflow.com/q/28553364/558933。基本上
init()不是UIView的指定初始化器。 -
谢谢,我确实使用了 init(frame:),这在调用 super.init(coder:) 时会导致我出现新错误。上面的例子是我想做的,我正在寻找类似的东西。
-
init(frame:)的代码应该调用 super.init(frame:),而不是init(coder:)。