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 UISegmentedControlselectedSegmentIndex 的文档说将值设置为 -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()
            }
        }
    }
}