• 搜索控制器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。接下来的话,需要对导航栏上面的其他控件,比如返回按钮重新进行位置的调整。

  • 相关阅读:
    指针
    const
    指针数组和指向数组的指针
    extjs初探之由浅入深目录
    ie6字体设置13px引发的问题
    在IAR下通过Jlink将程序直接下载到Flash指定地址
    提高C语言程序运行稳定性的方法
    C/C++编程习惯
    释放QQ占用的C盘空间
    非阻塞算法思想在关系数据库应用程序开发中的使用
  • 原文地址:https://www.cnblogs.com/cchHers/p/9084041.html
Copyright © 2020-2023  润新知