You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 14:45:35