为什么我的选择器在 SwiftUI 中没有响应?
Why is my picker unresponsive in SwiftUI?
我试过在分段选择器和轮式选择器之间切换,但都没有在单击时注册选择。
NavigationView {
Form {
Picker(selection: self.$settings.senatorChoice, label: Text("Choose a senator")) {
ForEach(0 ..< self.customSenators.count) {
Text(self.customSenators[[=10=]])
}
}.pickerStyle(WheelPickerStyle())
.labelsHidden()
.padding()
}
}
为每个选择器项目添加一个标签,使其独一无二,例如
Text(self.customSenators[[=10=]]).tag([=10=])
仔细检查 settings.senatorChoice
是否为 Int
。 ForEach
中的范围类型必须与 Picker
的绑定类型相匹配。 (有关详细信息,请参阅 )。
此外,您可能想使用 ForEach(self.customSenators.indices, id: \.self)
。如果元素被添加到 customSenators
或从 customSenators
中删除,这可以防止可能的崩溃和过时的 UI。 (有关详细信息,请参阅 。)
以下测试代码在单击时注册选择。
struct Settings {
var senatorChoice: Int = 0
}
struct ContentView: View {
@State private var settings = Settings()
@State private var customSenators = ["One","Two","Three"]
var body: some View {
NavigationView {
Form {
Picker(selection: self.$settings.senatorChoice, label: Text("Choose a senator")) {
ForEach(0 ..< customSenators.count) {
Text(self.customSenators[[=10=]])
}
}.pickerStyle(SegmentedPickerStyle())
.labelsHidden()
.padding()
Text("value: \(customSenators[settings.senatorChoice])")
}
}
}
}
我试过在分段选择器和轮式选择器之间切换,但都没有在单击时注册选择。
NavigationView {
Form {
Picker(selection: self.$settings.senatorChoice, label: Text("Choose a senator")) {
ForEach(0 ..< self.customSenators.count) {
Text(self.customSenators[[=10=]])
}
}.pickerStyle(WheelPickerStyle())
.labelsHidden()
.padding()
}
}
为每个选择器项目添加一个标签,使其独一无二,例如
Text(self.customSenators[[=10=]]).tag([=10=])
仔细检查 settings.senatorChoice
是否为 Int
。 ForEach
中的范围类型必须与 Picker
的绑定类型相匹配。 (有关详细信息,请参阅
此外,您可能想使用 ForEach(self.customSenators.indices, id: \.self)
。如果元素被添加到 customSenators
或从 customSenators
中删除,这可以防止可能的崩溃和过时的 UI。 (有关详细信息,请参阅
以下测试代码在单击时注册选择。
struct Settings {
var senatorChoice: Int = 0
}
struct ContentView: View {
@State private var settings = Settings()
@State private var customSenators = ["One","Two","Three"]
var body: some View {
NavigationView {
Form {
Picker(selection: self.$settings.senatorChoice, label: Text("Choose a senator")) {
ForEach(0 ..< customSenators.count) {
Text(self.customSenators[[=10=]])
}
}.pickerStyle(SegmentedPickerStyle())
.labelsHidden()
.padding()
Text("value: \(customSenators[settings.senatorChoice])")
}
}
}
}