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

NavigationView内List中的分段Picker全部禁用的问题求助

嘿,我一眼就瞅出问题所在啦!你的分段Picker全都变灰没法交互,是因为每个Picker里的选项都没加对应的tag标记。SwiftUI的Picker需要靠tag来把选项和你绑定的选中值关联起来,没有这个标记的话,Picker根本不知道哪个选项对应哪个数值,自然就会被置灰禁用咯。

你只需要给每个Picker里的Text选项加上.tag(),对应你UserSettings里的Int类型值就行,修改后的完整代码如下:

class UserSettings: ObservableObject {
    @Published var distSetting:Int = 0
    @Published var tempSetting:Int = 0
    @Published var pressSetting:Int = 0
}

struct ContentView: View {
    @ObservedObject var settings = UserSettings()
    
    var body: some View {
        NavigationView {
            VStack{
                Text("Unit Settings")
                List{
                    Section{
                        Text("Temperature")
                        Picker("Temperature", selection: $settings.tempSetting, content: {
                            Text("F°").tag(0)
                            Text("C°").tag(1)
                            Text("K°").tag(2)
                        })
                        .pickerStyle(.segmented)
                    }
                    
                    Section{
                        Text("Pressure")
                        Picker("Pressure", selection: $settings.pressSetting, content: {
                            Text("millibar").tag(0)
                            Text("inches Hg").tag(1)
                            Text("hPa").tag(2)
                        }).pickerStyle(.segmented)
                    }
                    
                    Section{
                        Text("Distance")
                        Picker("Distance", selection: $settings.distSetting, content: {
                            Text("nm").tag(0)
                            Text("sm").tag(1)
                            Text("km").tag(2)
                        }).pickerStyle(.segmented)
                    }
                }
                .listSectionSpacing(6)
                Spacer()
            }
        }
    }
}

#Preview {
    ContentView()
}

这样修改之后,每个选项都和你绑定的Int值对应上了,Picker就能正常识别选中状态,终于可以和用户正常交互啦~

备注:内容来源于stack exchange,提问作者BlueskyMed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 07:55:29