UISearchDisplayController 简单用法
2015-06-07 14:41
471 查看
{
NSArray *data;
NSArray *filterData;
UISearchDisplayController *searchDisplayController;
}
#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;
UIButton *button = [UIButton
buttonWithType:UIButtonTypeCustom];
[self.view
addSubview:button];
button.frame =
CGRectMake(100,
100, 150,
18);
button.backgroundColor = [UIColor
redColor];
}
- (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];
}
if( [data
containsObject:text]){
NSLog(@"发音");
}
// [self.view.superview removeFromSuperview];
NSLog(@"you click %lu %@",indexPath.row,text);
}
@end
NSArray *data;
NSArray *filterData;
UISearchDisplayController *searchDisplayController;
}
#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;
UIButton *button = [UIButton
buttonWithType:UIButtonTypeCustom];
[self.view
addSubview:button];
button.frame =
CGRectMake(100,
100, 150,
18);
button.backgroundColor = [UIColor
redColor];
}
- (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];
}
if( [data
containsObject:text]){
NSLog(@"发音");
}
// [self.view.superview removeFromSuperview];
NSLog(@"you click %lu %@",indexPath.row,text);
}
@end
相关文章推荐
- arduino用串口控制LGB
- iOS UILocalizedIndexedCollation
- JUNIT(suite组合测试)
- NYOJ1100WAJUEJI which home strong!(bfs+优先队列)
- grunt 构建工具(build tool)初体验
- [镜像制作]VMWare搭建Openstack——guestfish命令修改虚拟机镜像
- UISprite扩展强化,减少游戏包大小功能及功能扩展【NGUI】
- UITextView默认文字提示
- 【leetcode】Distinct Subsequences
- iOS 蓝牙使用小结 bluetooth
- 【转】arm交叉编译器gnueabi、none-eabi、arm-eabi、gnueabihf、gnueabi区别
- UE4官方Third Person框架初学者见解
- 每日一得-org.hibernate.hql.ast.QuerySyntaxException: Path expected for join!错误解决办法
- Ant入门基础
- iOSProgramming: The Big Nerd Ranch Guide (4th Edition) 阅读笔记-关于 View 的 Redrawing 和 Run Loop
- iOS开发零基础教程之UILabel的新初始化方法
- NGUI -- UICamera(监听输入事件,鼠标,键盘等)
- valueForKeyPath用途
- 重用系统自带UITableViewCell
- String、StringBuilder与StringBuffer的区别