以我的代码为例:
class MyView: UIView {
var labelText : UILabel
init() {
// ****** Place 1 ******
// the width of my view is fixed
super.init(frame: CGRectMake(0, 0, CGFloat(200), 0))
// ****** Place 2 ******
我通常可以在放置1 或放置2 中初始化标签。但两者都不完美。如果我在放置1 时初始化标签,则视图本身未初始化。如果我在放置2 处启动标签,我收到以下错误消息,以便我需要将标签声明为可选。
Property' self.labelText'没有在super.init调用
初始化
可选变量的问题是我必须使用labelText!无处不在,使代码有点混乱。
有什么好主意吗?感谢
答案 0 :(得分:2)
您应该将变量初始化为1'并在' place two'中进行操作,例如
class MyView: UIView {
let labelText : UILabel
init() {
labelText = new UILabel()
// the width of my view is fixed
super.init(frame: CGRectMake(0, 0, CGFloat(200), 0))
addSubView(labelText)
}
}
此外,在大多数情况下,我希望此标签是常量,因此使用上面的let
。