如何解决SwiftUI分段选择器默认状态为nil
我正在使用一种形式的分段选择器来回答简单的“是”和“否”问题。可以将分段选择器的初始状态设置为nil,以便在出现时不会突出显示/选择是或否吗?
@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[$0])")
}
}
.pickerStyle(SegmentedPickerStyle())
.padding()
}
}
}
}
解决方法
似乎,如果将选定的值设置为不在分段控件中的索引,则不会突出显示任何值。
例如:
@State private var equipmentCheck = -1
有效。
我正在寻找可以确保可以正常工作但没有找到工作的文档。
UIKit UISegmentedControl
的{{3}}的文档说将值设置为-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[$0])")
.tag(Optional($0)) // << here !!
}
}
.pickerStyle(SegmentedPickerStyle())
.padding()
}
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。