SwiftUI Searchable Views
Main Idea
SwiftUI has searchable modifier that we can bind a string property to and filter our data as the user types
BASIC
struct ContentView: View {
@State private var searchText = ""
let allNames = ["Subh", "Vina", "Melvin", "Stefanie"]
var body: some View {
NavigationView {
List(filteredNames, id: \.self) { name in
Text(name)
}
.searchable(text: $searchText, prompt: "Look for something")
.navigationTitle("Searching")
}
}
var filteredNames: [String] {
if searchText.isEmpty {
return allNames
} else {
return allNames.filter { $0.localizedCaseInsensitiveContains(searchText) }
}
}
}