搜索控制器UISearchController的使用
说明:本文主要是将系统UISearchController控件声明文件中的属性、方法、代理等介绍下,后续再联合【搜索栏UISearchBar】这篇文章一起更新更实用的信息。
1、初始化
// 如果设置searchResultsController参数为nil,代表搜索后的结果不显示在当前控制器之上
- (instancetype)initWithSearchResultsController:(UIViewController *)searchResultsController;
2、代理
@property(nonatomic, weak) id<UISearchControllerDelegate> delegate;
UISearchControllerDelegate:
// 当用户在搜索控制器中开始编辑时或者将active属性设置为YES时,该方法被调用
- (void)presentSearchController:(UISearchController *)searchController; // 当搜索控制器即将出现时
- (void)willPresentSearchController:(UISearchController *)searchController; // 当搜索控制器已经出现时
- (void)didPresentSearchController:(UISearchController *)searchController; // 当搜索控制器即将消失时
- (void)willDismissSearchController:(UISearchController *)searchController; // 当搜索控制亲已经消失时
- (void)didDismissSearchController:(UISearchController *)searchController;
3、管理搜索结果
// 在呈现搜索控制器执之前,将搜索栏放置在视图控制器界面的某个位置。点击搜索栏为起点。与搜索栏的交互是由UISearchController自动处理的
@property(nonatomic, strong, readonly) UISearchBar *searchBar; // 该协议是用来监控将搜索结果传递到搜索结果控制器的过程的
@property(nonatomic, weak) id<UISearchResultsUpdating> searchResultsUpdater; // 搜索结果控制器
@property(nonatomic, strong, readonly) UIViewController *searchResultsController; // 当用户点击搜索栏后,搜索控制器会出现,并且搜索结果控制器也会自动的显示出来。通常利用这个属性是为了确定当前是否显示了搜索结果。但是也可以将此属性设置为YES,这样就会强制显示出搜索界面。 默认为NO
@property(nonatomic, assign, getter=isActive) BOOL active;
UISearchResultsUpdating:
// 只要搜索栏成为第一响应者或者对搜索栏中的文本进行更改,就会自动调用此方法。在此方法中进行过滤或者更新
- (void)updateSearchResultsForSearchController:(UISearchController *)searchController;
4、配置搜索界面
// 当此属性为YES时,只要用户与搜索栏进行交互,搜索控制器就会遮住包含可搜索内容的视图控制器。当此属性为NO时,搜索控制器不会遮住原始视图控制器。该属性仅仅是控制原始视图控制器是否最初被遮挡。当用户开搜索栏中输入文本时,搜索控制器就会立即显示搜索结果控制器和结果。
// 如果使用同一个控制器来显示可搜索内容和搜索结果,建议将此属性设置为NO。此属性的默认为YES
@property(nonatomic, assign) BOOL obscuresBackgroundDuringPresentation; // 在搜索过程中底层内容是否变暗
@property(nonatomic, assign) BOOL dimsBackgroundDuringPresentation; // 当出现搜索控制器的时候是否隐藏导航栏。默认为YES
@property(nonatomic, assign) BOOL hidesNavigationBarDuringPresentation;
二、使用过程中注意的问题
1、如果将UISearchController中的属性searchBar作为导航栏的titleView,在iOS11以后,导航栏的高度将不再是44,而是56。接下来的话,需要对导航栏上面的其他控件,比如返回按钮重新进行位置的调整。
搜索控制器UISearchController的使用的更多相关文章
- iOS开发实战之搜索控制器UISearchController使用
当tableView中的数据过多的时候,在tableView上加一个搜索框就变的很必要了,本文就讨论搜索控制器的使用,以及谓词的简单实现. .m文件中代码如下 添加搜索控制器的各种协议 <UIS ...
- iOS开发 - 一个天真的搜索控制器的独白
文/Azen(简书作者)原文链接:http://www.jianshu.com/p/6d5327111511著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 正文 一.关于横向模块开发 ...
- 搜索框UISearchController的使用(iOS8.0以后替代UISearchBar + UISearchDisplayController)
1.searchResultsUpdater:设置显示搜索结果的控制器 ? 1 _mySearchController.searchResultsUpdater = self; 2.dimsB ...
- iOS之搜索框UISearchController的使用(iOS8.0以后替代UISearchBar+display)
在iOS 8.0以上版本中, 我们可以使用UISearchController来非常方便地在UITableView中添加搜索框. 而在之前版本中, 我们还是必须使用UISearchBar + UISe ...
- iOS原生的搜索:UISearchController
iOS8之前我们使用UISearchDisplayController做TableView的本地搜索,查看UIKit库,苹果已经使用新控件取代它. NS_CLASS_DEPRECATED_IOS(3_ ...
- iOS --- 搜索框UISearchController的使用(iOS8.0以后替代UISearchBar+display)
在iOS 8.0以上版本中, 我们可以使用UISearchController来非常方便地在UITableView中添加搜索框. 而在之前版本中, 我们还是必须使用UISearchBar + UISe ...
- iOS中的两种搜索方式UISearchDisplayController和UISearchController
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 以前iOS的搜索一般都使用UISearchDisplayCon ...
- iOS 谓词讲解
1.NSPredicate (1)比较运算符 1.比较运算符 > .< .== . >= .<= . != 运算符还可以跟逻辑运算符一起使用,&& , || ...
- UISearchController 搜索
UISearchController实现搜索 通过 UISearchController 实现 UISearchResultsUpdating 这个委托实现上面的效果: 视图中中需要声明UISearc ...
随机推荐
- AMD R7 2700X 安装虚拟机
自己组装的台式机,选用的是微星X470主板,该主板默认的虚拟化技术是关闭的,在bios中也不太容易找到,具体方法如下. [开机或重启]--[按住DEL进入BIOS]--[高级模式F7]--[选择OC] ...
- Java面向对象封装优化2_构造方法
1. 类 package cn.itcast.day06.demo05; /* 一个标准的类通常要拥有下面四个组成部分: 1. 所有的成员变量都要使用private关键字修饰 2. 为每一个成员变量编 ...
- 07-Docker-Image深入理解
目录 07-Docker-Image深入理解 参考 镜像简介 什么是Docker镜像 什么是Docker容器 镜像结构 镜像特性 镜像层 容器层 镜像存储 07-Docker-Image深入理解 Do ...
- 5_6 团体队列(UVa540)<queue与STL其他容器的综合运用>
先给出T个团体,并给出每个团体有多少人和每个人的编号,然后所有团体一起排队,排成一条大队列,排队的原则是,一个成员加入,如果这个成员所在的团体已经有人在排队了,那么他就加到他所在团体的最后面,而不是整 ...
- python opencv:绘图 基本图形
参数说明 • img:你想要绘制图形的那幅图像. • color:形状的颜色.以 RGB 为例,需要传入一个元组,例如:( 255,0,0)代表蓝色.对于灰度图只需要传入灰度值. • thicknes ...
- 《Web安全攻防 渗透测试实战指南》 学习笔记 (四)
Web安全攻防 渗透测试实战指南 学习笔记 (四) Nmap Network Mapper 是一款开放源代码的网 ...
- C#开发点滴记录
1.开发windows服务程序,不应该在程序中调用windform相关的方法与类库,会产生未知的异常,windows服务中是可以产生日志文件的,会生成在安装服务的当前路径下面,比如服务为D:/MySe ...
- idea maven项目使用过程中遇到的问题
1. Error:Cannot build Artifact :war exploded because it is included into a circular depency 参考: http ...
- Jmeter 如何发起一个post请求
举例平台:https://www.juhe.cn/docs/api/id/65 前提条件: 1)要在聚合网站注册实名认证才可以收到Key,用于Get请求的参数数值 2)Jmeter本地安装好 3.这是 ...
- nyoj 24
素数距离问题 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,并输出其相距长度.如果左右有等距离长度 ...