iOS開發-UI (九)UITableView搜尋功能,-uiuitableview
知識點:
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];