Demo介绍
这是一个通过SearchBar
来搜索tableview
内容的一个简单的例子,界面如下:
mock数据
首先添加一个mock
数据到tableview
。
1 | //mock数据 |
获取输入
获取用户的搜索输入,并简单判断前缀来返回结果:
1 | //获取输入 |
绑定结果
绑定结果到dataSource
:
1 | searchResult |
现在已经能使用搜索了。
优化
运行后发现每次输入文字,都会发送请求,可以使用debounce
指定一段时间后不再有输入再发送请求,同时使用distinctUntilChanged
来过滤和上次一样的输入。
1 | let searchResult = searchbar.rx |
还可以使用filter
直接过滤空的搜索。
1 | let searchResult = searchbar.rx |
总结
这里主要用到节流来处理用户输入,大家可以结合网络实时从接口获取数据,但是要主要线程切换。
代码见github: