SwiftUI 分段选择器默认状态为 nil
SwiftUI segmented picker default state as nil
我在表单中使用分段选择器来回答简单的“是”和“否”问题。是否可以将分段选择器初始状态设置为 nil,以便 yes 或 no 都不会出现 highlighted/selected?
@State private var equipmentCheck = 0
private var answers = ["Yes", "No"]
var body: some View {
NavigationView {
Form {
Section(header: Text("Questions")) {
Text("Have the plant and equipment been checked?")
Picker("", selection: $equipmentCheck) {
ForEach(0 ..< answers.count, id: \.self) {
Text("\(self.answers[[=10=]])")
}
}
.pickerStyle(SegmentedPickerStyle())
.padding()
}
}
}
}
似乎如果您将所选值设置为不在分段控件中的索引,则 none 个值会突出显示。
例如:
@State private var equipmentCheck = -1
有效。
我正在寻找确认这一定有效的文档,但我找到了 none。
UIKit UISegmentedControl
的 selectedSegmentIndex
的文档说将值设置为 -1 以删除选择,因此在这里这样做似乎也是合理的。
这是一个可能的方法。测试并使用 Xcode 11.4 / iOS 13.4
@State private var equipmentCheck: Int? // << here !!
private var answers = ["Yes", "No"]
var body: some View {
NavigationView {
Form {
Section(header: Text("Questions")) {
Text("Have the plant and equipment been checked?")
Picker("", selection: $equipmentCheck) {
ForEach(0 ..< answers.count, id: \.self) {
Text("\(self.answers[[=10=]])")
.tag(Optional([=10=])) // << here !!
}
}
.pickerStyle(SegmentedPickerStyle())
.padding()
}
}
}
}
我在表单中使用分段选择器来回答简单的“是”和“否”问题。是否可以将分段选择器初始状态设置为 nil,以便 yes 或 no 都不会出现 highlighted/selected?
@State private var equipmentCheck = 0
private var answers = ["Yes", "No"]
var body: some View {
NavigationView {
Form {
Section(header: Text("Questions")) {
Text("Have the plant and equipment been checked?")
Picker("", selection: $equipmentCheck) {
ForEach(0 ..< answers.count, id: \.self) {
Text("\(self.answers[[=10=]])")
}
}
.pickerStyle(SegmentedPickerStyle())
.padding()
}
}
}
}
似乎如果您将所选值设置为不在分段控件中的索引,则 none 个值会突出显示。
例如:
@State private var equipmentCheck = -1
有效。
我正在寻找确认这一定有效的文档,但我找到了 none。
UIKit UISegmentedControl
的 selectedSegmentIndex
的文档说将值设置为 -1 以删除选择,因此在这里这样做似乎也是合理的。
这是一个可能的方法。测试并使用 Xcode 11.4 / iOS 13.4
@State private var equipmentCheck: Int? // << here !!
private var answers = ["Yes", "No"]
var body: some View {
NavigationView {
Form {
Section(header: Text("Questions")) {
Text("Have the plant and equipment been checked?")
Picker("", selection: $equipmentCheck) {
ForEach(0 ..< answers.count, id: \.self) {
Text("\(self.answers[[=10=]])")
.tag(Optional([=10=])) // << here !!
}
}
.pickerStyle(SegmentedPickerStyle())
.padding()
}
}
}
}