更改布尔值时无法在 SwiftUI 中更改按钮文本

Unable to get button text to change in SwiftUI when changing boolean value

我想要一个按钮,当单击它时会切换一个布尔值并更改按钮的文本。通过使用 print 语句,我可以确认按钮正确切换了 bool 值,但它没有更改按钮的文本。

我已经尝试手动将 bool 默认值设置为 false,这确实会更改文本,但我仍然无法在切换时更改它。

Button(action: {
                Variables.userTriangle.cupShooting = 7
                Variables.userTriangle.triangle[6].toggleStatus()
            }) {
                if !Variables.userTriangle.triangle[6].status {
                    Text("x")
                        .font(.largeTitle)
                } else {
                    Text("7")
                        .font(.largeTitle)
                }
            }

当点击按钮时,我希望它通过更改布尔值来更改文本的值。我计划拥有多个这样的按钮。

我相信该视图只构建一次,因此它不会在每次更改时检查 if 条件...

您可以做的是将您的文本设为 @State var,然后当您更改它时,它会在视图中自动更新。

@State var someText = "x"

...

Button(action: {
                Variables.userTriangle.cupShooting = 7
                Variables.userTriangle.triangle[6].toggleStatus()
                if (Variables.userTriangle.triangle[6].status) {
                   self.someText = "7"
                } else {
                   self.someText = "x"
                }
            }) {
                Text(self.someText).font(.largeTitle)

            }

更简单的方法是:

Button(action: {
            Variables.userTriangle.cupShooting = 7
            Variables.userTriangle.triangle[6].toggleStatus()
        }) {
            Text(Variables.userTriangle.triangle[6].status ? "7" : "x")
        }