UISearchController笔记

前言

iOS8开始,苹果引入了新的UISearchController替代UISearchDisplayController。iOS7已经废弃一段时间了,所以研究了下UISearchController的使用,替换了目前项目中的一个搜索模块,UISearchDisplayController的使用不再赘述,直接讲解UISearchController。

1.UISearchController简介

一个UISearchController对象通过与UISearchBar交互管理搜索结果的展示。当你有一个包含可搜索内容的VC,把UISearchController对象的searchBar嵌入到当前VC的布局中,当用户与searchBar交互时,UISearchController自动展示你自定义的searchResultsController。

2.原理

一个UISearchController(SVC)需要两个自定义的VC:第一个VC1展示可搜索的内容,第二个VC2展示搜索的结果。VC1通常是push或present出来的界面,VC2负责展示搜索的结果,当使用initWithSearchResultsController初始化一个SVC时,把VC2当做参数传入,SVC会在适当的时候展示VC2。

每一个SVC都包含一个searchBar对象,必须把searchBar嵌入到VC1的布局中,当用户点击searchBar时,SVC会自动展示VC2。

当用户在searchBar输入时,SVC会通知遵循searchResultsUpdater协议的对象(一般是VC1或者VC2),通过searchResultsUpdater对应的方法就可以进行搜索,并将搜索的结果展示到VC2中。

如果想要自定义VC2的presentation或者dismissal,可以让一个对象遵循的SVC的delegate,delegate有5个方法,分别对应VC2的5个状态。

尽管UISearchController是一个VC,但不要直接present,如果非要present,把UISearchController包装进UISearchContainerViewController,然后present UISearchContainerViewController。

3.实例

3.1 场景

从首页进入搜索用户界面(VC1),VC1会展示搜索框和推荐的用户,点击搜索框展现VC2,编辑搜索框会将搜索结果展现在VC2上。VC截图如下:

3.2 VC1中实例化UISearchController和VC2

创建@property:

viewDidLoad中实例化对象:

3.3 VC2中实例化SVC的代理

创建@property:

代理方法:

4.手机截图


5.结语

UISearchController介绍就到这里。

下一篇:应用内发短信/邮件,messenger、line、whatsapp分享

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,986评论 19 139
  • iOS8.0之前,搜索栏基本都是靠UISearchBar+UISearchDisplayController这对好...
    杭研融合通信iOS阅读 2,920评论 1 6
  • 1.不管你吃什么不吃什么,有多挑食,都是你的特别之处,不是怪异之处,我完全接受。 2.永远包容和支持你,任何事。 ...
    玉泠泠阅读 143评论 0 0
  • 萤火虫在向黑夜诉说着孤独 梧桐叶隐藏了满面的秋色 惊飞的蝉鸣震落荷叶的露水 我举起忧伤的酒杯,饮尽半生尘缘 面对着...
    泰安左眼皮跳跳阅读 190评论 0 6
  • 明明就在一起, 弄的像咫尺天涯, 网络让孩子和家长沟通更频繁了。[捂脸][捂脸]
    青青橙阅读 338评论 0 0