知识点:
1.UITableView搜索功能
<UITableViewDataSource,UITableViewDelegate,UISearchResultsUpdating,UISearchControllerDelegate>
=======================
UITableView搜索功能
1.UISearchController
搜索控制器
@property (nonatomic,strong)UITableView *tableView;//表格视图
@property (nonatomic,strong)NSMutableArray *dataArr;//数据源数组
@property (nonatomic,strong)UISearchController *searchCtl;//搜索
2.创建方式
- (instancetype)initWithSearchResultsController:(UIViewController *)searchResultsController;
//实例化一个ResultViewController ResultViewController *ctl = [ResultViewController new]; NSLog(@"ctl = %p",ctl); //实例化一个搜索控制器 //参数:需要提供一个展示结果的控制器 self.searchCtl = [[UISearchController alloc] initWithSearchResultsController:ctl];
3.@property (nonatomic, assign) BOOL dimsBackgroundDuringPresentation;
作用:在搜索的时候使底色变暗 //去掉变暗效果 self.searchCtl.dimsBackgroundDuringPresentation = NO;
4.可遵循的协议代理
1)UISearchResultsUpdating
2)UISearchControllerDelegate
//设置代理 self.searchCtl.searchResultsUpdater = self; self.searchCtl.delegate = self;
5.代理方法
1)- (void)updateSearchResultsForSearchController:(UISearchController *)searchController;
调用时机:当搜索框的输入内容改变的时候
#pragma mark- UISearchResultsUpdating //进入编辑模式或者搜索输入框内容发生改变的时候,都会回调以下方法 -(void)updateSearchResultsForSearchController:(UISearchController *)searchController{ //取得展示搜索结果的控制器对象 ResultViewController *resultCtl = (ResultViewController *)searchController.searchResultsController; NSLog(@"resultCtl = %p",resultCtl); //清空数组 [resultCtl.saveArr removeAllObjects]; for (NSString *name in self.dataArr) { //判断name当中是否包含了searchBar.text if ([name containsString:searchController.searchBar.text]) { [resultCtl.saveArr addObject:name]; } } //刷新UI [resultCtl.resultTableView reloadData]; }
2)- (void)didDismissSearchController:(UISearchController *)searchController
调用时机:当退出搜索模式的时候 //退出搜索模式 -(void)didDismissSearchController:(UISearchController *)searchController{ //切换成非搜索模式 self.isSearch = NO; //刷新UI [self.tableView reloadData]; }
6.UISearchBar
搜索框
//设置searchBar此搜索输入框为表格视图的头部视图 self.tableView.tableHeaderView = self.searchCtl.searchBar;
1)sizeToFit
作用:UIView根据自己的内容来变化Frame的大小
//根据内容自动匹配本身的大小 [self.searchCtl.searchBar sizeToFit];
2)placeholder
作用:文字提示
//设置文字提示 self.searchCtl.searchBar.placeholder = @"请输入关键字";
3)barTintColor
作用:输入框的背景色
//背景色 self.searchCtl.searchBar.barTintColor = [UIColor cyanColor];