ios 中使用 Search Display Controller 來對 UITableView 進行前台查詢

來源:互聯網
上載者:User

  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.csdn.net/detail/remote_roamer/5890617

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.