说明:本文主要是将系统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的使用的更多相关文章

  1. iOS开发实战之搜索控制器UISearchController使用

    当tableView中的数据过多的时候,在tableView上加一个搜索框就变的很必要了,本文就讨论搜索控制器的使用,以及谓词的简单实现. .m文件中代码如下 添加搜索控制器的各种协议 <UIS ...

  2. iOS开发 - 一个天真的搜索控制器的独白

    文/Azen(简书作者)原文链接:http://www.jianshu.com/p/6d5327111511著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 正文 一.关于横向模块开发 ...

  3. 搜索框UISearchController的使用(iOS8.0以后替代UISearchBar + UISearchDisplayController)

    1.searchResultsUpdater:设置显示搜索结果的控制器 ? 1     _mySearchController.searchResultsUpdater = self; 2.dimsB ...

  4. iOS之搜索框UISearchController的使用(iOS8.0以后替代UISearchBar+display)

    在iOS 8.0以上版本中, 我们可以使用UISearchController来非常方便地在UITableView中添加搜索框. 而在之前版本中, 我们还是必须使用UISearchBar + UISe ...

  5. iOS原生的搜索:UISearchController

    iOS8之前我们使用UISearchDisplayController做TableView的本地搜索,查看UIKit库,苹果已经使用新控件取代它. NS_CLASS_DEPRECATED_IOS(3_ ...

  6. iOS --- 搜索框UISearchController的使用(iOS8.0以后替代UISearchBar+display)

    在iOS 8.0以上版本中, 我们可以使用UISearchController来非常方便地在UITableView中添加搜索框. 而在之前版本中, 我们还是必须使用UISearchBar + UISe ...

  7. iOS中的两种搜索方式UISearchDisplayController和UISearchController

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 以前iOS的搜索一般都使用UISearchDisplayCon ...

  8. iOS 谓词讲解

    1.NSPredicate (1)比较运算符 1.比较运算符 > .< .== . >= .<= . != 运算符还可以跟逻辑运算符一起使用,&&  ,  || ...

  9. UISearchController 搜索

    UISearchController实现搜索 通过 UISearchController 实现 UISearchResultsUpdating 这个委托实现上面的效果: 视图中中需要声明UISearc ...

随机推荐

  1. java用JSONObject生成json

    Json在前后台传输中,是使用最多的一种数据类型.json生成的方法有很多,自己只是很皮毛的知道点,用的时候,难免会蒙.现在整理下 第一种: import net.sf.json.JSONArray; ...

  2. LaunchPad

    链接:https://ac.nowcoder.com/acm/contest/3665/D来源:牛客网 Hery is a boy with strong practical abilities. N ...

  3. socketserver tcp黏包

    socket (套接字) tcp(黏包现象原因) 传输中由于内核区缓冲机制(等待时间,文件大小),会在 发送端 缓冲区合并连续send的数据,也会出现在 接收端 缓冲区合并recv的数据给指定port ...

  4. __call__ ,,__str__魔法函数

    class Test(object): def __init__(self): self.name = "汪 汪" self.girl = "liu cc" # ...

  5. LeetCode练题——53. Maximum Subarray

    1.题目 53. Maximum Subarray——Easy Given an integer array nums, find the contiguous subarray (containin ...

  6. 关于umask的计算方式(简单任性)

    1.对于文件夹[d]来说  用755-umask 3.对与文件[f]来说,在2的基础上减掉x属性就完事儿(有x的,减掉1,没有的,就什么也不管) 再来个手绘版本的举例

  7. docker安装-单机/多机安装

      操作系统ubuntu14.04 16.04 v单机安装步骤: #安装httpsca证书 apt-get install apt-transport-https ca-certificates #添 ...

  8. VBA 学习笔记 - 日期

    date() 返回当前的系统日期 返回格式为 YYYY/MM/DD CDate() 学习资料:https://www.yiibai.com/vba/vba_cdate_function.html 将有 ...

  9. 手机远控SpyNote教程+软件

    链接:https://pan.baidu.com/s/1q0VVSxK0DCJk2VnOg5RgOA 提取码:1okp 生成一个小马界面.可以看到,和以往的远控一样,做好端口映射,定制图标,包名,版本 ...

  10. A10131013 Battle Over Cities (25分)

    一.技术总结 这一题是考查图的知识,题目的意思要理解清楚,就是考查统计图中连通块的数量,也就是没有一个结点后. 怎么删除该结点,并且统计连通块的数量成为问题解决的关键,这里可以当访问到结点时,直接返回 ...