zoukankan      html  css  js  c++  java
  • 搜索框UISearchController的使用(iOS8.0以后替代UISearchBar + UISearchDisplayController)

    1.searchResultsUpdater:设置显示搜索结果的控制器

    1
        _mySearchController.searchResultsUpdater = self;

    2.dimsBackgroundDuringPresentation:设置开始搜索时背景显示与否

    1
        _mySearchController.dimsBackgroundDuringPresentation = NO;

    3.[searchBar sizeToFit]:设置searchBar位置自适应

    1
        [_mySearchController.searchBar sizeToFit];

    4.设置searchBar为UITableView的头部视图

    1
        self.myTableView.tableHeaderView = self.mySearchController.searchBar;

    5.UISearchResultsUpdating:代理方法

    #import "SearchViewController.h"

    @interface ShareViewController ()<UISearchResultsUpdating,UITableViewDataSource,UITableViewDelegate>

    @property (nonatomic, strong) UITableView *myTableView;

    @property (nonatomic, strong) NSMutableArray *visableArray;//可见的

    @property (nonatomic, strong) NSMutableArray *filterArray;//滤波器

    @property (nonatomic, strong) NSMutableArray *dataSourceArray;

    @property (nonatomic, strong) UISearchController *mySearchController;

    @end

    @implementation SearchViewController

    - (void)viewDidLoad {

        [super viewDidLoad];

        

        [self initial];

    }

    - (void)initial{

        self.dataSourceArray = [NSMutableArray array];

        self.filterArray = [NSMutableArray array];

        for (int i = 0; i < 26; i++) {

            for (int j = 0; j < 4; j++) {

                NSString *str = [NSString stringWithFormat:@"%c%d", 'A'+i, j];

                [self.dataSourceArray addObject:str];

            }

        }

        

        self.visableArray = self.dataSourceArray;

        

        self.myTableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];

        _myTableView.delegate = self;

        _myTableView.dataSource = self;

        [self.view addSubview:_myTableView];

        

        self.mySearchController = [[UISearchController alloc] initWithSearchResultsController:nil];

        _mySearchController.searchResultsUpdater = self;

        _mySearchController.dimsBackgroundDuringPresentation = NO;

        [_mySearchController.searchBar sizeToFit];

        

        self.myTableView.tableHeaderView = self.mySearchController.searchBar;

    }

    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{

        if (!_visableArray || _visableArray.count == 0) {

            _visableArray = _dataSourceArray;

        }

        return _visableArray.count;

    }

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"identifier"];

        

        if (!cell) {

            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"identifier"];

        }

        

        cell.textLabel.text = [_visableArray objectAtIndex:indexPath.row];

        

        return cell;

    }

    - (void)updateSearchResultsForSearchController:(UISearchController *)searchController{

        NSString *filterString = searchController.searchBar.text;

        

        NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF contains [c] %@", filterString];

        

        self.visableArray = [NSMutableArray arrayWithArray:[self.dataSourceArray filteredArrayUsingPredicate:predicate]];

        

        [self.myTableView reloadData];

    }

  • 相关阅读:
    Lc169_多数元素
    Lc461_汉明距离
    有返回值的多线程
    Lc344_反转字符串
    Lc709_转换成小写字母
    Lc1436_旅行终点站
    Spring 注解回顾
    SpringCloud网关之Zuul
    SpringCloud注册中心之Zookeeper
    SpringCloud服务安全之hystrix
  • 原文地址:https://www.cnblogs.com/lrr0618/p/5177656.html
Copyright © 2011-2022 走看看