UISearchDisplayController

原创 2015年07月10日 09:47:19
#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
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

UISearchBar和UISearchDisplayController

今天第一次用UISearchBar+UISearchDisplayController感觉非常神奇。以前都是只用searchbar。看到苹果自带的搜索都是有黑色界面如图: 确不知道怎么实现的...

UISearchDisplayController

  • 2016年03月01日 15:29
  • 37KB
  • 下载

iOS --- 搜索框UISearchController的使用(iOS8.0以后替代UISearchBar + UISearchDisplayController的组合)

在iOS 8.0以上版本中, 我们可以使用UISearchController来非常方便地在UITableView中添加搜索框. 而在之前版本中, 我们还是必须使用UISearchBar + UIS...

UISearchDisplayController和UISearchBar

iOS3.0以后用UISearchDisplayController来作为搜索控制器(iOS8以后用UISearchController),以下是写了一个demo,简单的介绍了一下UISearchDi...

iOS开发-UI控件:关于使用UISearchDisplayController

iOS7中UISearchDisplayController 与UISearchBar结合使用时,有时候会出现搜索框获得焦点时,阴影遮盖部分挡住了搜索框,影响用户使用,如下图   API中没有...

UISearchBar 和 UISearchDisplayController的使用

之前比較少用UISearchBar 和 UISearchDisplayController,最近閱讀了一些有關資料,簡單做個筆記: 1、UISearchBar 和 UISearchDisplayCo...

UISearchDisplayController学习笔记

今天在使用UISearchDisplayController和UISearchBar时,出现了无法进入全屏搜索模式等问题,折腾了很长一段时间才解决掉。在这里把心得分享给大家,希望能对大家有帮助。...

iOS一个容易上手的搜索框,包括模糊查询UISearchDisplayController和UISearchBar交互

本码农写作能力比较差,希望能给大家用最大努力表达清楚写明白点。很多iOSer对于搜索比较新奇  ,类似于下面这种搜索框,对于新手可能觉得比较新奇(哈哈,别喷我,我只是这么说说)。 好了该说下原理了,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UISearchDisplayController
举报原因:
原因补充:

(最多只允许输入30个字)