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
相关产品推荐
相关产品推荐

