说明:本文主要是将系统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. JSP技术(一)

    Servlet的两个缺点: 1.首先,写在Servlet中所有的HTML标签必须包含JAVA字符串,使得处理HTTP响应报文工作十分繁琐. 2.所有的文件和HTML标记是硬代码,导致即使是微小变化,也 ...

  2. CapsNet资源

    算法源码: https://github.com/xanderchf/pyCapsNet https://github.com/naturomics/CapsNet-Tensorflow 参考文章: ...

  3. dfs(迷宫)

    问题 J: 棋盘行走 时间限制: 1 Sec  内存限制: 128 MB[命题人:admin] 题目描述 小Biu在玩一个棋盘游戏,这个游戏给出一个n*m的棋盘,并且每个点上有一个棋子,棋子的颜色 用 ...

  4. 【C语言】创建一个函数,将输入的2个数排序

    #include <stdio.h> void fun(int *x,int*y) { int t; if(*x>=*y) { t=*x;*x=*y;*y=t; } } main() ...

  5. 【兆易创新RISC-V开发板评测】01.干货分享

    背景介绍:2019年12月19日在面板包偶然发可以免费申请测评GD32VF103开发板,欣喜万分:在这之前各大技术论坛说是已经有国产兆易创新的RISCV指令集的MCU发布的事情,一时间摩拳擦掌想购入一 ...

  6. Plastic Bottle Manufacturer Tips - Attention To Plastic Bottle Processing Technology

    In fact, the processing technology of plastic bottles is actually quite strict. In fact, regular man ...

  7. Linux 常用命令——解压缩文件

    tar 解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(注:tar是打包,不是压缩!)———————————————.gz解压1:gunz ...

  8. L3-022 地铁一日游

    floyd算法建立新图,dfs标记~ #include<bits/stdc++.h> using namespace std; ; const int inf=1e9; int d[max ...

  9. 吴裕雄--天生自然Numpy库学习笔记:Numpy 数组操作

    import numpy as np a = np.arange(8) print ('原始数组:') print (a) print ('\n') b = a.reshape(4,2) print ...

  10. Java IO流详解(五)——缓冲流

    缓冲流也叫高效流,是处理流的一种,即是作用在流上的流.其目的就是加快读取和写入数据的速度. 缓冲流本身并没有IO功能,只是在别的流上加上缓冲效果从而提高了效率.当对文件或其他目标频繁读写或操作效率低, ...