2012-12-19 73 views
4

我想用搜索欄過濾TableView。 TableView有一個自定義原型單元,它具有Imageview和標籤,因此可以調用它。標籤隱藏在圖像下方。UISearchBar不過濾從UITableView的自定義單元格圖像

我有兩個數組,每個94個項目。當沒有任何搜索時它工作正常。 tableview以完美的順序顯示圖像/單元格。

當我搜索某些東西時,結果總是會返回適當數量的單元格。但是,圖像本身沒有被過濾。這意味着無論通過標籤過濾哪些單元格,圖像都將始終如一。

這是我的UISearchBar代碼的問題嗎?

-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {  
    if (searchText.length == 0) { 
     isFiltered = NO;  
    } else { 
     isFiltered = YES; 
     filteredHeroes = [[NSMutableArray alloc]init]; 

     for (NSString *str in totalHeroData) { 

      NSRange heroRange = [str rangeOfString:searchText options:NSCaseInsensitiveSearch]; 

      if (heroRange.location != NSNotFound) { 
       [filteredHeroes addObject:str]; 

      } 
     } } [self.HeroTableView reloadData]; } 

我很樂意提供任何其他資源。請記住,我有兩個94項目的陣列。如果我需要鏈接它們,我想知道如何做到這一點。

謝謝。

編輯:這裏是的cellForRowAtIndexPath方法:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath 
*)indexPath {  
     static NSString *CellIdentifier = @"heroTableCell"; 
     HeroTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];  
     if (cell == nil) { 
     cell = [[HeroTableViewCell alloc] 
       initWithStyle:UITableViewCellStyleDefault 
       reuseIdentifier: CellIdentifier];  
     } 
     // Configure the cell... 
     cell.textLabel.text = [self.heroNames objectAtIndex:indexPath.row];    
     cell.imageView.image = [UIImage imageNamed:[self.heroImages objectAtIndex:indexPath.row]]; 

     return cell; 
    } 

感謝asking-讓我知道你在想什麼:) 我花了大約10小時在網上搜索:S

+0

您需要發佈您的cellforrowatindexpath方法。 – iDev

+0

已添加! cellforrowatindexpath方法:) – Nick

+0

在searchBar:textDidChange中:您正在過濾filteredHeroes數組中的數據以及您正在使用heroNames&heroImages的cellForRowAtIndexPath中的數據。你能告訴你如何與這些有關嗎? –

回答

0

你應該使用一個nsmutuable陣列和添加的NSDictionary含有一個鍵imagename和一個密鑰名稱作爲字符串

[filteredHeroes ADDOBJECT:[NSDictionary的dictionaryWithObjectsAndKeys:名稱,@ 「名稱」,ImageName,@ 「圖像」,零]];
在cellForRowAtIndexPath中使用相同的filteredHeroes並使用鍵名稱篩選相同的數組,然後重新加載TableData並完成。