Swift子类UIView
我想子类化UIView
并显示类似视图的登录名。我已经在Objective-
C中创建了它,但是现在我想将其移植到Swift。我不使用情节提要,所以我用代码创建了所有UI。
但是第一个问题是我必须执行initWithCoder
。我给了它一个默认的实现,因为它不会被调用。现在,当我运行程序时,它崩溃了,因为我也必须实现initWithFrame
。现在我得到了:
override init() { super.init()
println("Default init")
}
override init(frame: CGRect) {
super.init(frame: frame)
println("Frame init")
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
println("Coder init")
}
我的问题是我应该在哪里创建文本字段等…,如果我从不实现框架和编码器,该如何“隐藏”呢?
回答:
我通常这样做,有点冗长。
class MyView: UIView { override init(frame: CGRect) {
super.init(frame: frame)
addBehavior()
}
convenience init() {
self.init(frame: CGRect.zero)
}
required init(coder aDecoder: NSCoder) {
fatalError("This class does not support NSCoding")
}
func addBehavior() {
print("Add all the behavior here")
}
}
let u = MyView(frame: CGRect.zero)
let v = MyView()
(编辑:我已经编辑了答案,以使初始化程序之间的关系更加清晰)
以上是 Swift子类UIView 的全部内容, 来源链接: utcz.com/qa/406706.html