thelatewind的博客

thelatewind

UISearchDisplayController

#import <UIKit/UIKit.h>

@interface MainViewController : UITableViewController{
   
NSArray *data;
   
NSArray *filterData;
   
UISearchDisplayController *searchDisplayController;
}

@end



- (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
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/thelatewind/article/details/46826707
个人分类: iOS
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭