SwiftUI中实现Toggle选中项点数统计功能的方法
解决SwiftUI中Toggle组件的点数计算问题
你可以通过添加状态变量存储计算结果,并在按钮点击时遍历各Toggle的选中状态来实现需求。以下是修改后的完整代码:
struct ContentView: View { @State private var elderly = false @State private var immobility = false @State private var cancer = false // 新增状态变量存储计算结果 @State private var selectedCount = 0 @State private var totalPoints = 0 var body: some View { VStack { Toggle(isOn: $elderly) { Text("> 65") } .padding() Toggle(isOn: $immobility) { Text("Immobility") } .padding() Toggle(isOn: $cancer) { Text("Cancer") } .padding() Button { // 重置计数 selectedCount = 0 totalPoints = 0 // 根据选中状态累加数量和点数 if elderly { selectedCount += 1 totalPoints += 2 } if immobility { selectedCount += 1 totalPoints += 1 } if cancer { selectedCount += 1 totalPoints += 2 } } label: { Text("Calculate") } .fontWeight(.bold) .frame(width: 200.0, height: 50) .background(Color.blue) .cornerRadius(10) .foregroundColor(.white) .font(.system(size: 20)) .padding() // 显示计算结果 Text("选中数量:\(selectedCount)") .font(.title2) .padding(.bottom, 8) Text("总点数:\(totalPoints)") .font(.title2) } } }
关键说明
- 新增
selectedCount和totalPoints两个@State变量,用于管理选中数量和总点数的状态,SwiftUI会自动根据变量更新UI。 - 点击按钮时先重置计数,再逐个判断每个Toggle的选中状态,分别累加对应数量和点数。
- 在界面底部添加文本组件,实时展示计算后的结果。
当所有Toggle都选中时,selectedCount为3,totalPoints为5,符合需求。
内容的提问来源于stack exchange,提问作者Alfred Wong
相关产品推荐
相关产品推荐

