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

时间:2019-09-09 14:38:59

标签: ios swift xcode swiftui

我想要一个按钮,单击该按钮时会切换一个布尔值并更改按钮的文本。通过使用打印语句,我可以确认该按钮正确切换了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)
                }
            }

点击按钮时,我希望它通过更改布尔值来更改文本的值。我计划使用多个这些按钮。

2 个答案:

答案 0 :(得分:3)

我认为视图仅构建一次,因此不会检查条件是否每次更改...

您可以做的是将文本设置为@State变量,然后对其进行更改,它将在视图中自动更新。

@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)

            }

答案 1 :(得分:0)

更简单的方法是:

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