SwiftUI搜索功能问题:未输入关键词时列表不应显示全部数据
解决SwiftUI搜索框为空时不展示全部数据的问题
你需要调整列表的过滤逻辑,让搜索框为空时不返回任何数据,仅在输入关键词后展示匹配结果。
方案一:直接修改过滤条件
将ForEach中的过滤逻辑改为仅当搜索框非空且标题匹配关键词时才返回数据:
NavigationView{ List { ForEach(self.data.datas.filter { !self.search.isEmpty && $0.title.localizedCaseInsensitiveContains(self.search) }, id: \.id) { rs in NavigationLink(destination: Detail(data: rs)) { Text(rs.title) } } } .navigationBarTitle("Search item") .searchable(text: self.$search) }
方案二:添加空状态提示(优化用户体验)
如果想在搜索框为空时给用户明确提示,可以增加条件判断:
NavigationView{ List { if search.isEmpty { Text("请输入关键词进行搜索") .foregroundColor(.gray) .frame(maxWidth: .infinity, alignment: .center) } else { ForEach(self.data.datas.filter { $0.title.localizedCaseInsensitiveContains(self.search) }, id: \.id) { rs in NavigationLink(destination: Detail(data: rs)) { Text(rs.title) } } } } .navigationBarTitle("Search item") .searchable(text: self.$search) }
修改后,搜索框为空时列表要么保持空白,要么显示提示文本,只有输入关键词后才会展示匹配的搜索结果。
内容的提问来源于stack exchange,提问作者John Smith
相关产品推荐
相关产品推荐

