关闭

UISearchDisplayController

183人阅读 评论(0) 收藏 举报
分类:
#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
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:7532次
    • 积分:449
    • 等级:
    • 排名:千里之外
    • 原创:39篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档