我将Swift类作为下面的简单代码:
class FavoriteView: UIView {
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
commonInit()
}
override init(frame: CGRect) {
super.init(frame: frame)
commonInit()
}
convenience init() {
self.init(frame: CGRectZero)
}
private func commonInit() {
// init something
}
// MY PROBLEM IS HERE
var favoriteCount: Int = 0 {
didSet {
// update the view
}
}
}
逻辑是,只要favoriteCount
设置为新值,就会运行didSet
中的代码。
运行良好。但问题是代码(didSet
)不是第一次运行。我的意思是当一个新的FavoriteView
实例被初始化时,我认为它也可以运行,但它不是。
有没有办法第一次运行该代码(在didSet
中)。
谢谢!
答案 0 :(得分:6)
didSet
观察者未使用默认值调用,以及在init
方法中设置属性时未调用(由于self
尚未初始化)。您可以编写单独的方法updateView
,并在init
观察者didSet
方法和中调用它。
private func commonInit() {
updateView()
// init something
}
// MY PROBLEM IS HERE
var favoriteCount: Int = 0 {
didSet {
updateView()
}
}
func updateView() {
//code that you wanted to place in observer
}