Swift 调用didSet时UILabel.text未更新

Swift 调用didSet时UILabel.text未更新,swift,Swift,每次外部类收到更新时,我都尝试更新UILabel(通过IB分配的自定义类,显示在多个视图控制器上): class CoinsLabel: UILabel { override init(frame: CGRect) { super.init(frame: frame) } required init?(coder: NSCoder) { super.init(coder: coder) } var coins

每次外部类收到更新时,我都尝试更新
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)
这将在主视图中添加标签。您需要设置标签框以调整到所需的视图


希望您理解。

我可以在不设置IB插座的情况下执行此操作吗?ViewController只是一个测试,硬币数量的变化实际上是由另一个类完成的。coinlabel显示在多个视图控制器中。这需要我将@IBAOutlet添加到每个视图控制器中,而不是我当前的方法,在接口生成器中,我只是将自定义类分配给它。下面的投票是怎么回事!?