// 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
时间: 2024-10-05 18:02:21