ios - 更改 bool 值时无法在 SwiftUI 中更改按钮文本

标签 ios swift xcode swiftui

我想要一个按钮,当单击它时会切换一个 bool 值并更改按钮的文本。通过使用 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)
                }
            }

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

最佳答案

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

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

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

            }

关于ios - 更改 bool 值时无法在 SwiftUI 中更改按钮文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57856216/

相关文章:

swift - 尽管在 Swift 3 上转换为 AnyObject,类型 "Any"没有下标成员?

ios - 如何解析这个 json 并在 uicollectionview 中显示

ios - 在每个 View Controller 中处理远程控制事件

ios - 错误: Use of undeclared type BindableObject

iOS 9 不使用 URL SCHEME 打开 Instagram 应用程序

ios - iPhone 4 上的背景图像被压缩,因为它使用与 iPhone 5 和 6 共享的 2 倍图像。有解决办法吗?

ios - 无法在 UITableView 中定义原型(prototype)单元格

ios - 超出父 View 时隐藏标签/按钮

objective-c - Swift 游戏中心认证

ios - 无法显示星期几