zoukankan      html  css  js  c++  java
  • UISearchController

    #import "ViewController.h"

    @interface ViewController () <UITableViewDelegate, UITableViewDataSource, UISearchResultsUpdating, UISearchControllerDelegate>

    {

        UIBarButtonItem *_editeBtn;

        UIBarButtonItem *_finishBtn;

        UITableView *_tableView;

        UISearchBar *_searchBar;

        UILabel * _footerlable;

    }

    @property (nonatomic, strong) NSMutableArray *dataList;

    @property (nonatomic, strong) NSMutableArray *searchList;

    @property (strong, nonatomic)  UISearchController *searchController;

    @end

    @implementation ViewController

    - (void)viewDidLoad {

        [super viewDidLoad];

        // Do any additional setup after loading the view, typically from a nib.

        [self setTitle:@"通讯录"];

        [self createBarItem];

        

        self.dataList=[NSMutableArray arrayWithCapacity:100];

        

        //产生100个“数字+三个随机字母”

        for (NSInteger i=0; i<100; i++) {

            [self.dataList addObject:[NSString stringWithFormat:@"%ld%@",(long)i,[self shuffledAlphabet]]];

        }

        

        _tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0,[UIScreen  mainScreen].bounds.size.width ,[UIScreen  mainScreen].bounds.size.height)];

        

        _tableView.delegate = self;

        _tableView.dataSource = self;

        _tableView.separatorStyle = UITableViewCellSelectionStyleNone;

        

        //创建UISearchController

        _searchController = [[UISearchController alloc] initWithSearchResultsController:nil];

        //设置代理

        _searchController.delegate = self;

        _searchController.searchResultsUpdater= self;

        

        //设置UISearchController的显示属性,以下3个属性默认为YES

        //搜索时,背景变暗色

        _searchController.dimsBackgroundDuringPresentation = NO;

        //搜索时,背景变模糊

        _searchController.obscuresBackgroundDuringPresentation = NO;

        //隐藏导航栏

        _searchController.hidesNavigationBarDuringPresentation = NO;

        

        _searchController.searchBar.frame = CGRectMake(self.searchController.searchBar.frame.origin.x, self.searchController.searchBar.frame.origin.y, self.searchController.searchBar.frame.size.width, 44.0);

        

        // 添加 searchbar 到 headerview

        _tableView.tableHeaderView = self.searchController.searchBar;

        

        [self.view addSubview:_tableView];

    }

    #pragma mark 创建导航栏按钮

    - (void)createBarItem

    {

        _editeBtn = [[UIBarButtonItem alloc] initWithTitle:@"编辑" style:UIBarButtonItemStylePlain target:self action:@selector(clickEdite:)];

        _finishBtn = [[UIBarButtonItem alloc] initWithTitle:@"完成" style:UIBarButtonItemStylePlain target:self action:@selector(clickFinish:)];

        self.navigationItem.rightBarButtonItem = _editeBtn;

    }

    //产生3个随机字母

    - (NSString *)shuffledAlphabet {

        

        NSMutableArray * shuffledAlphabet = [NSMutableArray arrayWithArray:@[@"A",@"B",@"C",@"D",@"E",@"F",@"G",@"H",@"I",@"J",@"K",@"L",@"M",@"N",@"O",@"P",@"Q",@"R",@"S",@"T",@"U",@"V",@"W",@"X",@"Y",@"Z"]];

        

        NSString *strTest = [[NSString alloc]init];

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

            int x = arc4random() % 25;

            strTest = [NSString stringWithFormat:@"%@%@",strTest,shuffledAlphabet[x]];

        }

        

        return strTest;

        

    }

    //设置区域的行数

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

        if (self.searchController.active) {

            return [self.searchList count];

        }else{

            return [self.dataList count];

        }

    }

    //返回单元格内容

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

        static NSString *flag=@"cell";

        UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:flag];

        if (cell==nil) {

            cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:flag];

        }

        if (self.searchController.active) {

            [cell.textLabel setText:self.searchList[indexPath.row]];

        }

        else{

            [cell.textLabel setText:self.dataList[indexPath.row]];

        }

        return cell;

    }

    #pragma mark - UISearchControllerDelegate代理

    //测试UISearchController的执行过程

    - (void)willPresentSearchController:(UISearchController *)searchController

    {

        NSLog(@"willPresentSearchController");

    }

    - (void)didPresentSearchController:(UISearchController *)searchController

    {

        NSLog(@"didPresentSearchController");

    }

    - (void)willDismissSearchController:(UISearchController *)searchController

    {

        NSLog(@"willDismissSearchController");

    }

    - (void)didDismissSearchController:(UISearchController *)searchController

    {

        NSLog(@"didDismissSearchController");

    }

    - (void)presentSearchController:(UISearchController *)searchController

    {

        NSLog(@"presentSearchController");

    }

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

        

        NSLog(@"updateSearchResultsForSearchController");

        NSString *searchString = [self.searchController.searchBar text];

        NSPredicate *preicate = [NSPredicate predicateWithFormat:@"SELF CONTAINS[c] %@", searchString];

        if (self.searchList!= nil) {

            [self.searchList removeAllObjects];

        }

        //过滤数据

        self.searchList= [NSMutableArray arrayWithArray:[_dataList filteredArrayUsingPredicate:preicate]];

        //刷新表格

        [_tableView reloadData];

    }

    #pragma mark 导航栏按钮点击事件

    - (void)clickEdite:(UIBarButtonItem *)sender

    {

        self.navigationItem.rightBarButtonItem = _finishBtn;

    }

    - (void)clickFinish:(UIBarButtonItem *)sender

    {

        self.navigationItem.rightBarButtonItem = _editeBtn;

    }

    #pragma mark 懒加载

    - (NSMutableArray *)dataList

    {

        if (!_dataList) {

            _dataList = [NSMutableArray array];

        }

        return _dataList;

    }

    - (NSMutableArray *)searchList

    {

        if (!_searchList) {

            _searchList = [NSMutableArray array];

        }

        return _searchList;

    }

    1
  • 相关阅读:
    常用数列
    sqrt
    树状数组
    hash
    P1102 A-B数对
    codevs 1795 金字塔 2
    P2296 寻找道路
    [USACO16JAN]子共七Subsequences Summing to Sevens
    P3397 地毯
    关于调用&&传址
  • 原文地址:https://www.cnblogs.com/fantasy3588/p/5389888.html
Copyright © 2011-2022 走看看