UI1_UITableViewSearchController

//  UI1_UITableViewSearchController

//

//  Created by zhangxueming on 15/7/15.

//  Copyright (c) 2015年 zhangxueming. All rights reserved.

//



#import "AppDelegate.h"

#import "ViewController.h"



@interface AppDelegate ()



@end



@implementation AppDelegate





- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    // Override point for customization after application launch.

    ViewController *root = [[ViewController alloc] init];

    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:root];

    self.window.rootViewController = nav;

    self.window.backgroundColor = [UIColor whiteColor];

    [self.window makeK
//

//  ViewController.m

//  UI1_UITableViewSearchController

//

//  Created by zhangxueming on 15/7/15.

//  Copyright (c) 2015年 zhangxueming. All rights reserved.

//



#import "ViewController.h"



@interface ViewController ()

{

    UITableView *_tableView;//表视图

    NSMutableArray *_dataList;//数据源

    //UISearchDisplayController

    UISearchController *_searchController;//搜索控制器

    NSMutableArray *_searchList;//搜索的结果

}

@end



@implementation ViewController



- (void)viewDidLoad {

    [super viewDidLoad];

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

    [self createData];

    [self createUI];

}



- (void)createData

{

    _dataList = [NSMutableArray array];

    _searchList = [NSMutableArray array];

    for (int i='A'; i<='Z'; i++) {

        NSMutableArray *array = [NSMutableArray array];

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

            NSInteger num = arc4random()%50+1;

            NSString *name = [NSString stringWithFormat:@"人物%d:name%ld",j,num];

            [array addObject:name];

        }

        [_dataList addObject:array];

    }

}



- (void)createUI

{

    _tableView = [[UITableView alloc] initWithFrame:self.view.frame style:UITableViewStylePlain];

    _tableView.delegate = self;

    _tableView.dataSource  = self;

    [self.view addSubview:_tableView];

    

    //创建搜索控制器, nil 表示在当前view上显示搜索结果

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

    //更新搜索结果

    _searchController.searchResultsUpdater = self;

    //隐藏导航栏

    _searchController.hidesNavigationBarDuringPresentation = NO;

    //背景变暗

    _searchController.dimsBackgroundDuringPresentation = NO;

    //添加searchBar

    CGRect frame = _searchController.searchBar.frame;

    frame.size.height = 44;

    _searchController.searchBar.frame = frame;

    _tableView.tableHeaderView = _searchController.searchBar;

}



#pragma mark  ---UITableView代理---



//返回分区的个数

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

{

    if(_searchController.active)

    {

        return 1;

    }

    else

    {

        return _dataList.count;

    }

}

//返回分区中的行数

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

{

    //_dataList[section] <==> [_dataList objectAtIndex:section];

    if (_searchController.active) {

        return _searchList.count;

    }

    return [_dataList[section] count];

}



//创建cell



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

{

    static NSString *cellId = @"cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId];

    if (!cell) {

        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellId];

    }



    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

    if (_searchController.active) {

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

    }

    else

    {

        cell.textLabel.text = _dataList[indexPath.section][indexPath.row];

    }

    return cell;

}



//设置分区的头标题



- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section

{

    if (_searchController.active) {

        return @"搜索结果";

    }

    return [NSString stringWithFormat:@"%c",(char)(section+'A')];

}

//设置分区头的高度

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section

{

    return 50;

}



//设置分区索引

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView

{

    if(_searchController.active)

    {

        return nil;

    }

    NSMutableArray *titles = [NSMutableArray array];

    [titles addObject:UITableViewIndexSearch];

    for (int i='A'; i<='Z'; i++) {

        [titles addObject:[NSString stringWithFormat:@"%c",(char)i]];

    }

    return titles;

}



- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index

{

    return index-1;

}



//更新搜索结果

- (void)updateSearchResultsForSearchController:(UISearchController *)searchController

{

    [_searchList removeAllObjects];

    //NSPredicate 谓词语法

    //过滤数据

    NSString *searchString = _searchController.searchBar.text;

    for (int i=0; i<_dataList.count; i++) {

        NSInteger count = [[_dataList objectAtIndex:i] count];

        for (NSInteger j=0; j<count; j++) {

            NSString *obj = [[_dataList objectAtIndex:i] objectAtIndex:j];

            if ([obj containsString:searchString]) {

                [_searchList addObject:obj];

            }

        }

    }

    [_tableView reloadData];

}



- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}



@end

 

eyAndVisible]; return YES; } // // ViewController.h // UI1_UITableViewSearchController // // Created by zhangxueming on 15/7/15. // Copyright (c) 2015年 zhangxueming. All rights reserved. // #import <UIKit/UIKit.h> @interface ViewController : UIViewController <UITableViewDelegate, UITableViewDataSource,UISearchResultsUpdating> @end

 

你可能感兴趣的:(UITableView)