SwiftUI分段控件无法选中值问题排查求助
问题原因与解决办法
你遇到的分段控件选中状态不显示的问题,根源在于Picker内部错误地用HStack包裹了ForEach。Segmented样式的Picker要求每个选项直接作为Picker的子视图,HStack会破坏Picker的内部布局逻辑,导致选中状态无法正确渲染。
修正后的代码
把Picker里的HStack移除,让ForEach直接成为Picker的子元素即可:
struct ContentView: View { @State private var selectedExpenseType: ExpenseType = .business var body: some View { VStack { Picker("Select expense type", selection: $selectedExpenseType) { ForEach(ExpenseType.allCases) { expenseType in Text(expenseType.title) .tag(expenseType) } }.pickerStyle(.segmented) } .padding() } }
额外说明
- 你的
ExpenseType枚举实现是正确的,符合Identifiable、CaseIterable的要求,不需要调整。 - Segmented Picker会自动根据
tag和selection的匹配关系来高亮选中项,只要布局结构正确就能正常工作。
内容的提问来源于stack exchange,提问作者john doe
相关产品推荐
相关产品推荐

