You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI:如何根据集合状态切换按钮点击后的背景颜色?

解决SwiftUI按钮点击切换背景色的问题

你需要做两个关键修改来实现需求:

  1. 用@State修饰集合变量,确保状态变化能触发视图刷新
  2. 根据集合是否包含1,动态设置按钮背景色

修改后的完整代码:

import SwiftUI

struct ContentView: View {
    // 用@State修饰,让集合变化时自动更新视图
    @State var ExcludedNumbers = Set([0])
    
    var body: some View {
        Button("1") {
            // 简化点击逻辑:判断是否包含1,插入或移除
            if ExcludedNumbers.contains(1) {
                ExcludedNumbers.remove(1)
            } else {
                ExcludedNumbers.insert(1)
            }
            print(ExcludedNumbers)
        }
        .padding(EdgeInsets(top: 10, leading: 20, bottom: 10, trailing: 20))
        // 动态设置背景色:包含1时红色,否则绿色
        .background(ExcludedNumbers.contains(1) ? .red : .green)
        .clipShape(Circle())
    }
}

#Preview {
    ContentView()
}

关键说明

  • @State:SwiftUI通过状态变量追踪变化,只有标记为@State的变量更新时,视图才会重新渲染,这样背景色才能跟着变化
  • 动态背景色:使用三元运算符? :,根据ExcludedNumbers.contains(1)的结果直接切换背景色
  • 简化点击逻辑:去掉冗余的== false/== true判断,代码更简洁

内容的提问来源于stack exchange,提问作者Vanilla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 22:07:48