我想将新的.searchable()修饰符与Firestore (或其他一些服务器)结合使用,比如App中的"Search“选项卡。我刚刚找到了关于如何使用.searchable()筛选本地列表/数组的教程。我知道如何使用.onSubmit()修饰符将搜索请求发送到Firestore。我的问题是如何在调用.onSubmit()或单击searchCompletion时显示另一个视图。
因此,如果搜索栏是空的,我希望SuggestionsView()显示,但是如果用户搜索了什么,搜索栏下面应该有SearchResultView(),比如App:


我用这段代码试过了,但这并没有产生的效果。
struct SearchView: View {
@State var searchText = ""
var body: some View {
NavigationView {
if searchText.isEmpty {
SuggestionsView()
.searchable(text: $searchText)
.navigationTitle("Search")
}
else {
SearchResultView()
.searchable(text: $searchText)
}
}
}
}
struct SuggestionsView: View {
var body: some View {
List {
Text("Suggestions")
}
.listStyle(PlainListStyle())
}
}
struct SearchResultView: View {
var body: some View {
List {
Text("Results")
}
.listStyle(InsetGroupedListStyle())
}
}发布于 2022-01-13 15:06:29
将搜索栏移动到NavigationView,这样它就不会受到if else语句的影响。
import SwiftUI
struct SearchView: View {
@State var searchText = ""
var body: some View {
if #available(iOS 15.0, *) {
NavigationView {
if searchText.isEmpty {
SuggestionsView()
.navigationTitle("Search")
} else {
SearchResultView()
}
}
.searchable(text: $searchText)
} else {
// Fallback on earlier versions
}
}
}https://stackoverflow.com/questions/68512260
复制相似问题