别让用户翻列表:用 AI + searchable 给 iOS 页面加搜索框
2026. 7. 4. · 08:11

别让用户翻列表:用 AI + searchable 给 iOS 页面加搜索框

今天这一技教你识别哪些 iOS 列表该加搜索,并让 AI 用 SwiftUI `.searchable` 补上搜索框、本地过滤、无结果提示和基础建议词。PM 不用先学搜索架构,也能用 6 步清单验收输入、清空、大小写和结果恢复。

用户在列表里找一个项目时,最糟糕的体验不是「没有高级筛选」,而是只能一直划。收藏夹、商品库、笔记列表、客户列表、设置项,只要条目超过一屏,PM 就应该先问一句:这里是不是该有搜索?
SwiftUI 已经把这个入口做成了标准能力。Apple 的 searchable(text:placement:prompt:) 会把一个视图标记为可搜索,并配置搜索字段的显示;WWDC21 也把 .searchable 讲成 SwiftUI 搜索体验的基础修饰符。1 2
这件事适合交给 AI 做,因为它的改动通常很小:加一个搜索词状态,把列表从「全量数据」切到「匹配结果」,再补上提示词和无结果状态。PM 不需要先学完整搜索架构,也能把需求说清楚并验收。

先判断:这页适不适合加搜索

不要看到列表就加搜索。今天这一技适合三类页面:
  • 列表内容已经在本地,比如收藏、历史记录、设置项、离线样本数据。
  • 用户知道自己要找什么,只是找不到入口,比如输入商品名、客户名、标签、城市。
  • 条目数量增长后,继续滑动的成本明显变高,但还没复杂到需要完整筛选系统。
如果搜索要打远程接口,就先把范围收窄:让 AI 做「按回车后搜索」,不要每输入一个字就请求一次。WWDC21 提到可以用 onSubmit(of: .search) 在用户提交搜索时触发取结果,这比每个字符都去请求更容易控制。2

给 AI 的需求,不要只写「加个搜索框」

「加个搜索框」太空了,AI 可能只把框放上去,却没处理筛选逻辑、空结果和大小写。你要把它写成一张小需求单:
请给这个 SwiftUI 列表加搜索。目标是让用户按名称或描述快速找到条目。使用 .searchable,搜索词绑定到一个 @State 字符串;当搜索词为空时显示原列表,当搜索词不为空时显示匹配结果。匹配时忽略大小写。搜索框提示文案写成「搜索名称或标签」。如果没有结果,显示一个清楚的无结果提示,不要让页面看起来像数据丢了。
这段话里有四个关键点:搜什么、怎么搜、空搜索显示什么、无结果显示什么。Create with Swift 的示例也是这个思路:用 searchable 绑定搜索词,再根据搜索词切换原列表和过滤后的结果。3
Apple 的人机界面指南把搜索字段定义为让用户在内容集合里输入特定词进行查找的输入框。4 所以提示文案不要写「搜索」两个字就结束,要写用户可以搜的对象:名称、标签、订单号、城市、联系人,或者你这个页面真实存在的字段。

让 AI 改代码时,盯住三个位置

第一处是搜索词状态。你要看到类似 @State private var searchText = "" 这样的变量。它是搜索框和列表之间的桥。
第二处是 .searchable 的位置。Apple 的 WWDC 示例里,导航视图会根据平台和导航结构把搜索字段放到合适的位置;开发者也可以把 .searchable 放在想关联的列或页面上。2 对 PM 来说,验收标准很简单:搜索框应该跟这张列表属于同一个页面,不要跑到详情页或别的分栏里。
第三处是结果数据。你要让 AI 明确写出「原列表」和「搜索结果」的切换逻辑。Swift with Majid 的实践文章也强调,searchable 提供的是搜索字段和搜索词绑定,真正显示什么结果,要由内容自己根据 query 过滤或请求。5

可以顺手加一个搜索提示,但别一开始就做复杂

如果页面字段很明确,可以让 AI 加 3 到 5 个搜索建议。比如商品页给「咖啡」「面包」「牛奶」,客户页给最近访问过的客户名,设置页给「通知」「隐私」「订阅」。SwiftUI 的搜索建议可以用 searchSuggestions,并通过 searchCompletion 把用户点选的建议填进搜索框。6
但第一版不要让 AI 做「智能联想」「模糊搜索」「同义词纠错」。这些词听起来高级,实际会把一个小改动拖成搜索产品。今天的目标只是让用户不用翻完整列表。

今天的验收清单

拿模拟器跑起来后,按这 6 步验收:
  1. 进入列表页,不输入任何词,原来的全部条目还在。
  2. 输入一个能命中的词,列表只显示匹配结果。
  3. 输入大小写不同的词,结果不应该因为大小写变化而消失。
  4. 输入一个不存在的词,页面给出无结果提示,而不是空白。
  5. 清空搜索框,列表恢复到全部条目。
  6. 进入详情页再返回,搜索状态不要把用户卡在奇怪的位置;如果产品预期返回后清空搜索,就把这个要求写进需求单。
如果这 6 项都过了,这个搜索框就已经能解决大部分「列表太长找不到」的问题。下一步再考虑建议词、远程搜索、搜索历史和筛选条件,不要一次把搜索做成大工程。

이 채널의 다른 콘텐츠

관련 콘텐츠

  • 로그인하면 댓글을 작성할 수 있습니다.