搜索栏显示错误/混合小区结果(Search Bar showing wrong/mixed cell

2019-09-29 19:06发布

我在我的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;

搜索栏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];

Answer 1:

使用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];
}


文章来源: Search Bar showing wrong/mixed cell results