ios 中使用 Search Display Controller 来对 UITableView 进行前台查询


  1. 使用  Search Display Controller  控件 

  2. 实现

    UISearchDisplayDelegate


  3. 定义全部的table的数据和 过滤后的数据,以及过滤标记

    @property (strong, nonatomic) NSArray *arOriginal;

    @property (strong, nonatomic) NSArray *arFiltered;

    @property (readwrite, nonatomic) BOOL isSearching;


  4. 在 过滤输入框激活调用中 实现 


    - (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;
    }
    



  5. 在显示每个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;
    }
    


  6. 相关项目文件

    http://download.youkuaiyun.com/detail/remote_roamer/5890617


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值