首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SwiftUI 3 .searchable与Firestore

SwiftUI 3 .searchable与Firestore
EN

Stack Overflow用户
提问于 2021-07-24 17:21:49
回答 1查看 185关注 0票数 0

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

因此,如果搜索栏是空的,我希望SuggestionsView()显示,但是如果用户搜索了什么,搜索栏下面应该有SearchResultView(),比如App:

我用这段代码试过了,但这并没有产生的效果。

代码语言:javascript
复制
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())
    }
}
EN

回答 1

Stack Overflow用户

发布于 2022-01-13 15:06:29

将搜索栏移动到NavigationView,这样它就不会受到if else语句的影响。

代码语言:javascript
复制
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
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68512260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档