zoukankan      html  css  js  c++  java
  • iOS开发-UI (九)UITableView搜索功能

    知识点:

    1.UITableView搜索功能

    <UITableViewDataSource,UITableViewDelegate,UISearchResultsUpdating,UISearchControllerDelegate>

    =======================

    UITableView搜索功能

        1.UISearchController

    搜索控制器

    @property (nonatomic,strong)UITableView *tableView;//表格视图

    @property (nonatomic,strong)NSMutableArray *dataArr;//数据源数组

    @property (nonatomic,strong)UISearchController *searchCtl;//搜索

    2.创建方式

    - (instancetype)initWithSearchResultsController:(UIViewController *)searchResultsController;

    //实例化一个ResultViewController
    
        ResultViewController *ctl = [ResultViewController new];
    
        NSLog(@"ctl = %p",ctl);
    
        //实例化一个搜索控制器
    
        //参数:需要提供一个展示结果的控制器
    
        self.searchCtl = [[UISearchController alloc] initWithSearchResultsController:ctl];

    3.@property (nonatomic, assign) BOOL dimsBackgroundDuringPresentation;

    作用:在搜索的时候使底色变暗
    
    //去掉变暗效果
    
        self.searchCtl.dimsBackgroundDuringPresentation = NO;

    4.可遵循的协议代理

    1)UISearchResultsUpdating

    2)UISearchControllerDelegate

    //设置代理
    
        self.searchCtl.searchResultsUpdater = self;
    
        self.searchCtl.delegate = self;

    5.代理方法

    1)- (void)updateSearchResultsForSearchController:(UISearchController *)searchController;

    调用时机:当搜索框的输入内容改变的时候

    #pragma mark- UISearchResultsUpdating
    
    //进入编辑模式或者搜索输入框内容发生改变的时候,都会回调以下方法
    
    -(void)updateSearchResultsForSearchController:(UISearchController *)searchController{
    
        //取得展示搜索结果的控制器对象
    
        ResultViewController *resultCtl = (ResultViewController *)searchController.searchResultsController;
    
        NSLog(@"resultCtl = %p",resultCtl);
    
        //清空数组
    
        [resultCtl.saveArr removeAllObjects];
    
        for (NSString *name in self.dataArr) {
    
            //判断name当中是否包含了searchBar.text
    
            if ([name containsString:searchController.searchBar.text]) {
    
                [resultCtl.saveArr addObject:name];
            }
        }
        //刷新UI
        [resultCtl.resultTableView reloadData];
    }

    2)- (void)didDismissSearchController:(UISearchController *)searchController

    调用时机:当退出搜索模式的时候
    
    //退出搜索模式
    
    -(void)didDismissSearchController:(UISearchController *)searchController{
    
        //切换成非搜索模式
    
        self.isSearch = NO;
        //刷新UI
        [self.tableView reloadData];
    }

    6.UISearchBar

    搜索框

    //设置searchBar此搜索输入框为表格视图的头部视图
    
        self.tableView.tableHeaderView = self.searchCtl.searchBar;

    1)sizeToFit

    作用:UIView根据自己的内容来变化Frame的大小

    //根据内容自动匹配本身的大小
    
        [self.searchCtl.searchBar sizeToFit];

    2)placeholder

    作用:文字提示

    //设置文字提示
    
        self.searchCtl.searchBar.placeholder = @"请输入关键字";

    3)barTintColor

    作用:输入框的背景色

    //背景色
    
        self.searchCtl.searchBar.barTintColor = [UIColor cyanColor];
  • 相关阅读:
    Raid卡在Write back 与Write through 时的性能差异
    mysql 的outfile以及infile 语法简单备份恢复表
    @SneakyThrows
    java中的mmap实现--转
    以ATT&CK为例构建网络安全知识图
    横向移动攻击点与识别
    Tomcat开启JMX监控
    mysql serverTimezone
    自增还是UUID?数据库主键的类型选择,为啥不能用uuid做MySQL的主键?
    数据库:查询结果中增加数据库不存在的字段的方法
  • 原文地址:https://www.cnblogs.com/fcug/p/6379987.html
Copyright © 2011-2022 走看看