ios UISearchDisplayController 实现 UITableView 搜索功能
来源:互联网 发布:鸟瞰图设计制作软件 编辑:程序博客网 时间:2024/06/04 19:39
UISearchDisplayController 是苹果专为 UITableView 搜索封装的一个类。
里面内置了一个 UITableView 用于显示搜索的结果。它可以和一个需要搜索功能的
controller 关联起来,其它的像原 TableView 和搜索结果 TableView 的切换, mask 的显示等等都
封装好了,使用起来非常非常的简单。特别是要实现全屏搜索时使用最多。
全屏搜索的意思是如果你用了 NavigationBar 当点击搜索框时 TableView 会自动弹上去覆盖
NavigationBar,达到一种全屏搜索的效果,这一切 UISearchDisplayController 都封装好了,如果自己
写就比较麻烦一些。
#import "SearchListViewController.h"@interface SearchListViewController ()<UITableViewDataSource,UITableViewDelegate,UISearchResultsUpdating,UISearchBarDelegate,UISearchDisplayDelegate>{ NSArray *_dataList; NSMutableArray *_showData; UISearchBar *_searchBar; UITableView *_searchTableView; UISearchDisplayController *searchDisplayController;}@end@implementation SearchListViewController- (void)viewDidLoad{ [super viewDidLoad]; [self setTopNavBackButton]; [self initContentView];}- (void)viewDidAppear:(BOOL)animated{ [super viewDidAppear:YES]; [self performSelector:@selector(setCorrectFocus) withObject:NULL];}- (void)initContentView{ _showData = [[NSMutableArray alloc]init]; _dataList = [@[@"百度",@"杭州",@"谷歌",@"苹果",@"and",@"广州",@"view",@"and",@"and",@"苹果IOS",@"谷歌android",@"微软",@"微软WP",@"table",@"bable",@"sable",@"安庆",@"西湖",@"六六",@"gable",@"fable",@"mable"]mutableCopy]; [self initSearchBar];}#pragma mark -- UI- (void)initSearchBar{ _searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 20, kDEVICEWIDTH,44)]; _searchBar.placeholder = @"搜索"; [self.view addSubview:_searchBar]; searchDisplayController = [[UISearchDisplayController alloc] initWithSearchBar:_searchBar contentsController:self]; searchDisplayController.searchResultsDataSource = self; searchDisplayController.searchResultsDelegate = self; _searchBar.delegate = self;}- (void)initTableView{ _searchTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 20, kDEVICEWIDTH, kDEVICEHEIGHT-20) style:UITableViewStylePlain]; _searchTableView.delegate = self; _searchTableView.dataSource = self; [self.view addSubview:_searchTableView];}- (void)setCorrectFocus{ [_searchBar becomeFirstResponder];}/* * 如果原 TableView 和 SearchDisplayController 中的 TableView 的 delete 指向同一个对象 * 需要在回调中区分出当前是哪个 TableView */- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ // 谓词搜索 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self contains [cd] %@",searchDisplayController.searchBar.text]; _showData = [[NSMutableArray alloc] initWithArray:[_dataList filteredArrayUsingPredicate:predicate]]; return _showData.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]; } cell.textLabel.text = _showData[indexPath.row]; return cell;}-(void) searchBarSearchButtonClicked:(UISearchBar *)searchBar{ [self searchBar:_searchBar textDidChange:nil]; [_searchBar resignFirstResponder];}- (void)searchBarCancelButtonClicked:(UISearchBar *) searchBar{ [self searchBar:_searchBar textDidChange:nil]; [_searchBar resignFirstResponder];}@end
0 0
- ios UISearchDisplayController 实现 UITableView 搜索功能
- ios UISearchDisplayController 实现 UITableView 搜索功能
- ios UISearchDisplayController 实现 UITableView 搜索功能
- ios UISearchDisplayController 实现 UITableView 搜索功能
- ios UISearchDisplayController 实现 UITableView 搜索功能
- ios UISearchDisplayController 实现 UITableView 搜索功能 UISearchDisplayController 是苹果专为 UITableView 搜索封装
- UISearchDisplayController实现搜索功能
- iOS--搜索UISearchController&&UISearchDisplayController
- UISearchDisplayController 实现筛选功能
- UISearchDisplayController(iOS < 8.0)实例应用实现搜索功能和VC展示效果, 以及代理方法的介绍
- IOS-模糊搜索UISearchBar+UISearchDisplayController
- iOS之默认搜索UISearchDisplayController
- ios UITableView表格实现搜索栏搜索
- UITableView 如何实现搜索框功能
- UITableView 如何实现搜索框功能
- iOS 搜索功能实现
- iOS 搜索功能的实现
- iOS 搜索功能的实现
- Android SQLite数据库 《第一行代码》
- 最令人发指叫人吐血的代码风格
- Cocos-2dx台球游戏实现
- Java对象 json之间的转换(json-lib)
- Android常用开源项目compile
- ios UISearchDisplayController 实现 UITableView 搜索功能
- windows计划任务执行php
- 终极 Shell - ZSH
- android自定义控件实现自动换行效果
- 安卓ble开发
- POJ 2909 哥德巴赫猜想
- iOS应用性能调优的25个建议和技巧
- Centos 7 - 静态IP设置
- 大龄程序员的未来在何方