我的问题是,我不想为这些代码声明多个Bool变量,我想更改确切的按钮按下标签,而不是全部

==同步,由Elderman更正==@elder_man

var body: some View {
    HStack {
        Text("Size")
            .fontWeight(.bold)
        Spacer()
        Button {
            self.buttonClicked.toggle()
        } label: {
            Text("US")
                .foregroundColor(buttonClicked ? .black : .gray.opacity(0.5))
                .fontWeight(.bold)
        }
        Button {
            self.buttonClicked.toggle()
        } label: {
            Text("UK")
                .foregroundColor(buttonClicked ? .black : .gray.opacity(0.5))
                .fontWeight(.bold)
        }
        Button {
            buttonClicked.toggle()
        } label: {
            Text("EU")
                .foregroundColor(buttonClicked ? .black : .gray.opacity(0.5))
                .fontWeight(.bold)
        }
    }
}

}

推荐答案

如果您可以将选项设置为可重用的内容(如数组),则可以消除重复的代码.

import SwiftUI

struct MultiButtonView: View {
    @State var buttonClicked : String = ""
    let options = ["US", "UK", "EU"]
    var body: some View {
        HStack {
            Text("Size")
                .fontWeight(.bold)
            Spacer()
            ForEach(options, id:\.description) { option in
                Button {
                    self.buttonClicked = option
                } label: {
                    Text(option)
                        .foregroundColor(buttonClicked == option ? .black : .gray.opacity(0.5))
                        .fontWeight(.bold)
                }
            }
        }
    }
}

Swift相关问答推荐

{Singleton类}类型的值没有成员$showegView'

向文本元素添加背景色失败

避免嵌套导航TabView

如何设置两个不同的视图模型以在我的SwiftUI应用程序中使用相同的数据源?

格式化单位和度量值.为什么从符号初始化的单位不能产生与静态初始化相同的结果

如果通过计时器循环运行,则检索CPU利用率百分比的SWIFT脚本运行良好.似乎在没有计时器的情况下停留在初始百分比上

BLE 在 ESP32 和 Iphone 之间发送字符串

UIView.convert(_ point:to:)的意外行为

如何删除快速处理消息

将弱引用作为类函数引用传递时,弱引用无法按预期工作

使 Swift 并发中的任务串行运行

如何使用 Swift/iOS 为人类书写的笔画制作动画?

在 UItextfield 的右视图上添加一个按钮,文本不应与按钮重叠

swift : 具有类型和值的枚举常量

'#selector' 的参数不引用 '@objc' 方法、属性或初始化程序

在 Swift 框架中加载资源(例如故事板)

如何在 SwiftUI 中以编程方式滚动列表?

将活动指示器 colored颜色 更改为黑色

在 Swift 中指定 UITextField 的边框半径

如何停止 NSTimer.scheduledTimerWithTimeInterval