搜索栏显示错误/混合单元格结果

我的iOS项目有问题。 我正在使用搜索栏在我的自定义tableview中过滤我的数组,以显示搜索的匹配关键字。

它没有显示代码错误,但显然存在问题。

通常我的tableview中有20多个项目,但是当我搜索时,它只显示我的tableview通常没有搜索的第一个单元格,该单元格的相同图像确切,但它不是同一个单元格,因为每个单元格都有按钮通过该单元格中的标签显示特定信息。 因此,当我搜索并且结果出来时,它会显示tableview中第一个单元格的图像,但显示正确单元格或匹配单元格的标签或信息。

我不知道它会是什么。 也许它保留了第一个单元格的图像,因为它是一个自定义的tableview单元格,并且由于某种原因它不会过滤掉正确的图像。 但奇怪的是,它是正确的细胞,因为每个细胞所具有的特定标签正在显示,而不是第一个细胞与第一个细胞图片的标签。 我希望我有意义。

码:

numberOfRowsInSection

if (isFiltered) { return [filteredGamesArray count]; } return [gamesArray count]; 

的cellForRowAtIndexPath

 Game * gameObject; if (!isFiltered) { gameObject = [gamesArray objectAtIndex:indexPath.row]; } else { gameObject = [filteredGamesArray objectAtIndex:indexPath.row]; } return cell; 

searchBar textDidChange

 if (searchText.length == 0) { isFiltered = NO; } else { isFiltered = YES; filteredGamesArray = [[NSMutableArray alloc] init]; for (Game *game in gamesArray) { NSString *str = game.gameName; NSRange stringRange = [str rangeOfString:searchText options:NSCaseInsensitiveSearch]; if (stringRange.location != NSNotFound) { [filteredGamesArray addObject:game]; } } } [myTableView reloadData]; 

此外,我不会在我的应用程序中保留任何图像或文本。 我使用json / php / mysql从服务器获取填充tableview单元格的所有信息,我使用的是图像URL。

我在这里遗漏了一些东西。 如果您需要更多详细信息,请告诉我们。

的cellForRowAtIndexPath

 // Loading Images NSURL * imgURL = [[gamesArray objectAtIndex:indexPath.row] valueForKey:@"gameURL"]; [cell.myImageView setContentMode:UIViewContentModeScaleAspectFit]; [cell.myImageView sd_setImageWithURL:imgURL placeholderImage:[UIImage imageNamed:@"no-image.jpg"] options:SDWebImageRefreshCached]; 

使用NSPredicate搜索最佳选项。

 searchArray=[[NSArray alloc]init]; NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"SELF.YOURSEARCHKEY contains[c] %@", YOURTEXTFIELD.text]; NSLog(@"%@",resultPredicate); searchArray = [ORIGNALARRAY filteredArrayUsingPredicate:resultPredicate]; NSLog(@"%@",searchArray); [self.colorTableview reloadData]; 

//这里检查搜索是打开还是关闭,只需更新你的数组

 if searching{ NSURL * imgURL = [[searchArray objectAtIndex:indexPath.row] valueForKey:@"gameURL"]; [cell.myImageView setContentMode:UIViewContentModeScaleAspectFit]; [cell.myImageView sd_setImageWithURL:imgURL placeholderImage:[UIImage imageNamed:@"no-image.jpg"] options:SDWebImageRefreshCached]; }else{ NSURL * imgURL = [[gamesArray objectAtIndex:indexPath.row] valueForKey:@"gameURL"]; [cell.myImageView setContentMode:UIViewContentModeScaleAspectFit]; [cell.myImageView sd_setImageWithURL:imgURL placeholderImage:[UIImage imageNamed:@"no-image.jpg"] options:SDWebImageRefreshCached]; }