您的位置:首页 > 产品设计 > UI/UE

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: