[英]UILabel.text not updating when didSet called
每次外部類收到更新時,我都試圖更新UILabel
(通過 IB 分配的自定義類,顯示在多個視圖控制器上):
class CoinsLabel: UILabel {
override init(frame: CGRect) {
super.init(frame: frame)
}
required init?(coder: NSCoder) {
super.init(coder: coder)
}
var coins: Int = 0 {
didSet {
print("Received update")
self.text = "\(coins)"
}
}
}
然后作為對 ViewController 的測試,我有:
@IBAction func go () {
CoinsLabel().coins = 1
}
打印行被調用,但標簽文本沒有改變?
在ViewController
類中,IB 參考看起來像
@IBAOutlet weak var coinLabel: CoinsLabel!
在按鈕操作中,您可以簡單地使用:
@IBAction func go () {
coinLabel.coins = 1 // Not CoinsLabel()
}
您還可以設置沒有 IB 參考的自定義標簽,如下所示:
let coinLabel = CoinsLabel(frame: CGRect(x: 0, y: 0, width: 200, height: 21))
coinLabel.coins = 1
view.addSubView(coinLabel)
這將在主視圖中添加一個標簽。 您需要設置標簽 Frame 以調整到您想要的視圖。
希望你能理解。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.