Swift:变量值不会传递到 didSet

标签 swift didset

这是我在 Swift 中的第一个项目,所以请耐心等待。

punkteLimit 应初始化为值 30。每次更改 slider 值时,都应更新变量的值以及标签。

var punkteLimit: Int = 30

@IBAction func sliderPunktelimitChanged(_ value: Float) {
    punkteLimit = Int(value)
    labelPunktelimit.setText("Punkte-Limit: \(punkteLimit)")
}

这似乎工作正常。标签正确更新,即当我将 slider 更改为 28 时,它会显示“Punkte-Limit:28”。然而,在接下来的部分中,punkteLimit 会停留在初始值 30(考虑Punktelimit 也是如此,但解决方案应该是相同的)。无论上述更改如何,触觉反馈都将在 gesamtPunkte == 30 时触发。

如果重要的话,我使用一个执行 gesamtPunkte += 1 的按钮来调整该值。

var gesamtPunkte: Int = 0 {
    didSet {
        if gesamtPunkte == punkteLimit && considerPunktelimit == true {
            WKInterfaceDevice.current().play(WKHapticType.stop)
        }
        ...
    }
}

我不太确定接下来该去哪里。

非常感谢您的帮助。

最佳答案

我通过将有问题的变量移到 InterfaceController 类之外解决了这个问题(使它们成为全局的?)。我读过关于这种方法的不同意见,如果有人想评论为什么它在类内部不起作用以及使它们全局化是否存在问题,请随意。

关于Swift:变量值不会传递到 didSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44343408/

相关文章:

ios - 当你可以改变一个变量并且值无论如何都会改变时,为什么要使用 didSet 呢?

ios - 如何使用属性上的 didSet 更改 UIView 的背景颜色?

swift - Swift 中 willSet 和 didSet 的目的是什么?

ios - 在iOS中的推送通知中振动取决于客户端或有效负载

ios - UITableView numberOfRows

ios - 如何使用swift在sprite kit中旋转sprite

swift - 如何设置字符串变量并使其始终小写?

swift - 为什么 didSet 中没有无限循环?

ios - 将数据传递给 Call Directory Extension

swift - 一个类中的多个 Equatable 函数