swift - 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 个字符后显示下拉菜单
解决方案
你如何处理这样的事情的松散结构:
- 设置一个可以以某种方式观察输出的文本字段。
- 如果您想使用组合,请创建一个管道,在每次更改时发送该字段的值,然后在符合您的规范时触发一些输出(>3 个字符)
- 当组合管道触发时,使用提供的值或触发器的性质来执行您想到的任何操作。
在Using Combine中在线提供的示例代码几乎可以完全做到这一点,该模式名为Declarative UI updates from user input。它涵盖了更多。托管 Using Combine的github 项目在项目中也有一个 SwiftUI 变体,如果您希望使用 SwiftUI 来查看它。
推荐阅读
- html - flexbox 图像正在失去其在右侧的位置
- java - 用于不同 API 的相同 DTO 上的 Spring Boot 请求正文验证
- javascript - 为什么箭头功能在 chrome 扩展内容脚本中不起作用?
- r - 使用正常和反向 y 轴绘图
- android - 如何制作自定义的圆形剪裁器形状,例如内部边缘在颤动的凹口曲线?
- java - 得到错误org.springframework.http.converter.HttpMessageNotReadableException:无法构造java.time.LocalDate的实例
- java - 此行为可能是特定于 Windows 客户端操作系统的;请查看服务器日志或尝试 Linux 客户端
- javascript - 无法使用 Mongoose 从数据库中删除项目
- java - Spring JPA:从 EntityGraph 中的子项中排除 lob 字段
- c# - Automapper忽略嵌套属性