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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值