繁体   English   中英

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

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

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

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

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

您可以做的是将您的文本设置为@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")
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM