- 使用 Search Display Controller 控件
- 实现
UISearchDisplayDelegate
- 定义全部的table的数据和 过滤后的数据,以及过滤标记
@property (strong, nonatomic) NSArray *arOriginal;
@property (strong, nonatomic) NSArray *arFiltered;
@property (readwrite, nonatomic) BOOL isSearching;
-
在 过滤输入框激活调用中 实现
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString { if(self.searchDisplayController.searchBar.text.length>0) { self.isSearching=YES; NSString *strSearchText = self.searchDisplayController.searchBar.text; NSMutableArray *ar=[NSMutableArray array]; // correctly working ! Thanx for watching video ! for (NSDictionary *d in self.arOriginal) { NSString *strData = [d valueForKey:@"name"]; if([strData rangeOfString:strSearchText].length>0) { [ar addObject:d]; } } self.arFiltered=[NSArray arrayWithArray:ar]; } else { self.isSearching=NO; } return YES; }
- 在显示每个cell的时候实现
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[[NSBundle mainBundle] loadNibNamed:@"CCell" owner:self options:nil] objectAtIndex:0]; } NSDictionary *dToAccess = (self.isSearching)?[self.arFiltered objectAtIndex:indexPath.row]:[self.arOriginal objectAtIndex:indexPath.row]; [(UILabel*)[cell viewWithTag:1] setText:[dToAccess valueForKey:@"name"]]; [(UILabel*)[cell viewWithTag:2] setText:[dToAccess valueForKey:@"price"]]; return cell; }
- 相关项目文件
http://download.youkuaiyun.com/detail/remote_roamer/5890617