本文共 2190 字,大约阅读时间需要 7 分钟。
上一篇已经讲诉了如何将文字显示到表格中,现在来实现在表格上方添加一个搜索栏,进行对表格中文字的搜索
1:拖拽一个 Search Bar到表格视图的顶部
2:为搜索栏控件设置搜索代理,选中搜索栏后,按住control键从搜索栏控件中拖拽出一根蓝色的引导线到布局栏的视图控制器标记,在弹出的窗口中选择delegate
3:在上一篇的代码中做如下的修改即可,已经在代码中给出相应的解释
#import "ViewController.h"@interface ViewController ()@property(nonatomic,strong) NSMutableArray *provinces;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; [self resetData];//便于代码重用 [self.tableView setContentOffset:CGPointMake(0, 44) animated:NO]; }-(void)resetData{ //连接服务器,返回教练列表 self.provinces =[NSMutableArray arrayWithArray:@[@"张三",@"李四",@"王五",@"张翼",@"账务",@"123",@"1234",@"23",@"230",@"236",@"237"]];};#pragma mark -数据库协议-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ return [self.provinces count];}//tableView cellForRowAtIndexPath:方法返回单元格对象-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ProvincesIdentifier" forIndexPath:indexPath]; //指定显示文本 cell.textLabel.text = [self.provinces objectAtIndex:[indexPath row]]; return cell;}//实现搜索-(void)handleSearch:(NSString *)searchText{ //provincesToRemove包含需要被删除的信息 NSMutableArray *provincesToRemove = [[NSMutableArray alloc]init]; //轮询 for(NSString *province in self.provinces) { //rangeOfString判断是否包含关键字 if ([province rangeOfString:searchText].location == NSNotFound) { [provincesToRemove addObject:province]; } } //删除位于待删除信息列表 [self.provinces removeObjectsInArray:provincesToRemove]; //重新加载数据 [self.tableView reloadData];}//搜索栏数据协议//点击“搜索”按钮时才进行搜索//-(void)searchBarSearchButtonClicked:(UISearchBar *)searchBar//{// NSString *searchText = [searchBar text];// [self handleSearch:searchText];// [searchBar resignFirstResponder];//}//输入文本就会触发-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText{ if ([searchText length] == 0) { [self resetData]; [self.tableView reloadData]; return; } [self handleSearch:searchText];}- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; }@end运行结果为: