我想要一个按钮,单击该按钮时会切换一个布尔值并更改按钮的文本。通过使用打印语句,我可以确认该按钮正确切换了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)
}
}
点击按钮时,我希望它通过更改布尔值来更改文本的值。我计划使用多个这些按钮。
答案 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")
}