用SwiftUI编写的单个过滤列表:
let animals = ["Cat", "Camel", "Dog", "Crocodile"]
struct ContentView: View {
@State private var searchString = ""
var body: some View {
VStack {
TextField("Search", text: $searchString)
List(animals.filter({searchString == "" ? true : $0.contains(searchString)}), id: \.self) { animal in
Text(animal)
}
}
}
}
您可以根据需要增加模型的复杂性,并应用列表选择(请参阅SwiftUI的文档)。要支持选择,请执行以下操作:
struct ContentView: View {
@State private var searchString = ""
@State private var listSelection: String? = ""
var body: some View {
VStack {
TextField("Search", text: $searchString)
List(animals.filter({searchString == "" ? true : $0.contains(searchString)}), id: \.self, selection: $listSelection) { animal in
Text(animal)
}
}.padding()
.onChange(of: searchString, perform: { value in
listSelection = animals.filter({searchString == "" ? true : $0.contains(searchString)}).first
})
}
}