标签:
继承与UIView, 包含uitextfield, 并且实现了uitextfielddelegate代理的主要内容
含有取消按钮, 默认不显示
包含 uisearchbar, uitableview, uinavigaitionitem 以及 uiviewcontroller
每一个uiviewcontroller有一个类型为UISerachDisplayController的属性, 但默认为nil
#import <UIKit/UIKit.h> @interface MainViewController : UITableViewController{ NSArray *data; NSArray *filterData; UISearchDisplayController *searchDisplayController; } @end
#import "MainViewController.h" @interface MainViewController () @end @implementation MainViewController - (id)initWithStyle:(UITableViewStyle)style { self = [super initWithStyle:style]; if (self) { data = [NSArray arrayWithObjects:@"Allan",@"Abbbb",@"Acccc",@"Bccccc",@"Cddddffk",@"Cddkllll",@"Ekkflfl",@"Ekljljfg" ,@"Leslie",@"Mm",@"Meinv",@"Meihi",@"Catilin",@"Arron", nil]; } return self; } - (void)viewDidLoad { [super viewDidLoad]; UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width , 44)]; searchBar.placeholder = @"搜索"; // 添加 searchbar 到 headerview self.tableView.tableHeaderView = searchBar; // 用 searchbar 初始化 SearchDisplayController // 并把 searchDisplayController 和当前 controller 关联起来 searchDisplayController = [[UISearchDisplayController alloc] initWithSearchBar:searchBar contentsController:self]; // searchResultsDataSource 就是 UITableViewDataSource searchDisplayController.searchResultsDataSource = self; // searchResultsDelegate 就是 UITableViewDelegate searchDisplayController.searchResultsDelegate = self; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } #pragma mark - Table view data source - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } /* * 如果原 TableView 和 SearchDisplayController 中的 TableView 的 delete 指向同一个对象 * 需要在回调中区分出当前是哪个 TableView */ - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { if (tableView == self.tableView) { return data.count; }else{ // 谓词搜索 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self contains [cd] %@",searchDisplayController.searchBar.text]; filterData = [[NSArray alloc] initWithArray:[data filteredArrayUsingPredicate:predicate]]; return filterData.count; } } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *cellId = @"mycell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellId]; } if (tableView == self.tableView) { cell.textLabel.text = data[indexPath.row]; }else{ cell.textLabel.text = filterData[indexPath.row]; } return cell; } -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ NSString *text; if (tableView == self.tableView) { text = data[indexPath.row]; }else{ text = filterData[indexPath.row]; } NSLog(@"you click %d %@",indexPath.row,text); } @end
UISerachBar / UISearchDisplayController
标签:
原文地址:http://www.cnblogs.com/apem/p/4522416.html