说我想要init
a UIView
子类具有String
and an Int
.
如果我只是子类化,我该如何在 Swift 中做到这一点UIView
?如果我只是定制init()
函数,但参数是一个 String 和一个 Int,它告诉我“在从初始化器返回之前不会调用 super.init()”。
如果我打电话super.init()
我被告知我必须使用指定的初始化程序。我应该在那里使用什么?框架版?编码器版本?两个都?为什么?
The init(frame:)
version 是默认的初始值设定项。您必须仅在初始化实例变量后调用它。如果此视图是从 Nib 重建的,那么您的自定义初始值设定项将不会被调用,而是调用init?(coder:)
版本将被调用。由于 Swift 现在需要实现所需的init?(coder:)
,我更新了下面的示例并更改了let
变量声明到var
和可选的。在这种情况下,您可以在中初始化它们awakeFromNib()
或者在稍后的某个时间。
class TestView : UIView {
var s: String?
var i: Int?
init(s: String, i: Int) {
self.s = s
self.i = i
super.init(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)