我不认为那是一个Picker
。我认为这是两个选择器,可能只有一个选择变量。
在 Xcode 13 中,您可以使用 Inline Picker Style 创建插图外观
import SwiftUI
struct PickerModel: Identifiable{
let id: UUID = UUID()
var parent: String
var children: [String]
}
var pickers: [PickerModel]{
[PickerModel(parent: "Child 1-B", children: ["Child 1-A","Child 1-B","Child 1-C"]),
PickerModel(parent: "Parent 2", children: ["Child 1-A","Child 1-B","Child 1-C","Child 1-D"])
]
}
struct MultiplePickerView: View {
@State var sensor: String = "no sensor selected"
var body: some View {
Form{
Text(sensor)
ForEach(pickers){picker in
Section(header: Text(picker.parent)){
Picker("", selection: $sensor){
ForEach(picker.children, id:\.description){child in
Text(child)
//Make sure tag is unique across pickers
.tag("\(picker.parent) \(child)")
}
}.pickerStyle(InlinePickerStyle())
.labelsHidden()
}
}
}
}
}
但在 Xcode 12 中,您必须手动创建选择器功能
struct MultiplePickerView: View {
@State var sensor: String = "no sensor selected"
var body: some View {
Form{
Text(sensor)
ForEach(pickers){picker in
Section(header: Text(picker.parent)){
ForEach(picker.children, id:\.description){child in
//tag must be unique throughout the pickers
let tag = "\(picker.parent) \(child)"
HStack{
Text(child)
Spacer()
if sensor == tag{
Image(systemName: "checkmark").foregroundColor(.blue)
}
}
.contentShape(Rectangle())
.onTapGesture {
sensor = tag
}
}
}
}
}
}
}
它