簡體   English   中英

調用 didSet 時 UILabel.text 不更新

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM