UISearchController使用


iOS8之前我們使用UISearchDisplayController做TableView的本地搜索

iOS8提供實現搜索功能的SDK:UISearchController(iOS8.0之后)、UISearchDisplayController(iOS8.0之前,iOS8.0之后不建議再使用)。

遵守UISearchResultsUpdating協議

1 @interface ZWRecommendationFocusViewController()<UISearchResultsUpdating>
2 @property (strong, nonatomic) NSArray *list;
3 @property (strong, nonatomic) NSMutableArray *searchList;
4 @property (strong, nonatomic)UISearchController *searchController;
5 @end
 1 -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
 2 {
 3     return (!self.searchController.active)?1:1;
 4 }
 5 
 6 -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
 7 {
 8     return (!self.searchController.active)?self.list.count:self.searchList.count;
 9 }
10 
11 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
12 {
13     ZWFocusList *list=(!self.searchController.active)?self.list[indexPath.row]:self.searchList[indexPath.row];
14     static NSString *identifier = @"cell";
15     ZWFocusListTableViewCell *cell = [ZWFocusListTableViewCell cellWithTableView:tableView identifier:identifier];
16     cell.list = list;
17     return cell;
18 }

 

 1 /**
 2  *  UISearchController作為UITableView的tableHeaderView
 3  */
 4 -(void)addSearchBar
 5 {
 6     //創建UISearchController對象
 7     UISearchController *searchController = [[UISearchController alloc]initWithSearchResultsController:nil];
 8     //是否添加半透明覆蓋層。為YES,搜索時,背景會變暗(背景變模糊)。默認為YES
 9     searchController.dimsBackgroundDuringPresentation = NO;
10     //是否隱藏導航欄。為YES,搜索時,UINavigationBar會隱藏。默認為YES
11     searchController.hidesNavigationBarDuringPresentation = YES;
12     //NO表示UISearchController在present時,可以覆蓋當前controller。默認為NO
13     searchController.definesPresentationContext = NO;
14     //搜索欄表頭視圖
15     self.tableView.tableHeaderView = searchController.searchBar;
16     
17     [searchController.searchBar sizeToFit];
18     searchController.searchResultsUpdater = self;
19     
20     searchController.searchBar.placeholder=@"請輸入名稱或者數字";
21     searchController.searchBar.autocapitalizationType=UITextAutocapitalizationTypeNone;
22     //    searchController.searchBar.showsCancelButton=YES;//顯示取消按鈕
23     //自適應
24     [searchController.searchBar sizeToFit];
25     //    searchController.searchBar.frame = CGRectMake(0, 0, 0, 44);
26     //    searchController.searchBar.prompt=@"請輸入關鍵字";
27     self.searchController = searchController;
28 }

 

 1 - (void)updateSearchResultsForSearchController:(UISearchController *)searchController{
 2     NSString *searchString = self.searchController.searchBar.text;
 3     //NSPredicate 謂詞
 4     NSPredicate *preicate = [NSPredicate predicateWithFormat:@"theme_name LIKE[c] %@", searchString];
 5     if (self.searchList!= nil) {
 6         [self.searchList removeAllObjects];
 7     }
 8     //過濾數據
 9     self.searchList= [NSMutableArray arrayWithArray:[self.list filteredArrayUsingPredicate:preicate]];
10     //刷新表格
11     [self.tableView reloadData];
12 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM