首页 > 解决方案 > SwiftUI 组合搜索文本

问题描述

我有后端 API /search?q=New Je 这是 JSON 城市的返回列表

我有一堂课

final class LocationStore: ObservableObject{
     @Published var List : [LocationModel] = []
     func search(q: String) {
         call backend search API and assign to List
     }

}

我在我的视图中有搜索 TextField 。

当用户在搜索文本字段中键入时,如何调用搜索 api 并分配给我的列表。需要在 TextField 中键入 3 个字符后显示下拉菜单

标签: swiftswiftuicombine

解决方案


你如何处理这样的事情的松散结构:

  • 设置一个可以以某种方式观察输出的文本字段。
  • 如果您想使用组合,请创建一个管道,在每次更改时发送该字段的值,然后在符合您的规范时触发一些输出(>3 个字符)
  • 当组合管道触发时,使用提供的值或触发器的性质来执行您想到的任何操作。

在Using Combine中在线提供的示例代码几乎可以完全做到这一点,该模式名为Declarative UI updates from user input。它涵盖了更多。托管 Using Combine的github 项目在项目中也有一个 SwiftUI 变体,如果您希望使用 SwiftUI 来查看它。


推荐阅读