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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 20:46:01