Мне кажется, что вы не обновляете свои клетки правильно.
Простой [myTableView reloadData];
может помочь, но вы также можете рассмотреть вопрос о том, как вы добавляете imageViews в свои ячейки. Возможно, вы не удалили (/ отпущены / заполнены) те изображения, которые вы правильно размещаете поверх своих ячеек. Вы должны делать это каждый раз, когда обновляете свои ячейки, так как imageViews не будет делать это самостоятельно, если вы специально не скажете им это.
Когда вы обновили свой вопрос с помощью некоторого полезного кода, я могу более конкретно рассказать об этой проблеме.
Теперь, когда вы отредактировали свое сообщение с помощью некоторого (хотя и очень небольшого) кода, я вижу из этого фрагмента, что вы не обновляете свои cell.imageViews до нового списка объектов.
Вы обновили свой uitableview новыми "copyListOfItems", но вы не сделали то же самое для ваших изображений, что привело к отображению старого контента, который является изображениями из "imageArray"
Вам необходимо создать для ваших изображений массив, подобный тому, который вы сделали с текстом.
if(searching)
{
cell.textLabel.text = [copyListOfItems objectAtIndex:indexPath.row];
[cell.imageView setImageWithURL:[NSURL URLWithString:[searchedArrayOfImages objectAtIndex:indexPath.row]];
}
else {
[cell.imageView setImageWithURL:[NSURL URLWithString:[imageArray objectAtIndex:indexPath.row]]
placeholderImage:[UIImage imageNamed:@"defaultPerson.png"]];
cell.textLabel.text = [friendsList objectAtIndex:indexPath.row];
}
Лучший способ сохранить изображения в именах (i.m.o.) - создать для них NSDictionary, поэтому при выборе записи ваше имя всегда соответствует вашему изображению.
В отношении комментариев ниже:
В тот момент, когда вы выполняете поиск, наиболее вероятно в методе делегата textDidChange
, вы, скорее всего, выбираете указатели всех ваших поисковых запросов. В данный момент вы выбираете индекс попадания из списка «Friendlist» и помещаете его в «copyListOfItems», вам также нужно использовать тот же самый индекс, взять изображение из «imageArray» и поместить его в «искомый массив». Таким образом, вы строите массив текста и изображения одинаково. Затем при перезагрузке таблицы вы можете взять один и тот же индекс из «copyListOfItems» и «searchArrayOfImages» и правильно заполнить ячейку.
Это будет выглядеть примерно так:
- (void) searchTableView
{
NSString *searchText = searchBar.text;
NSMutableArray *searchArray = [[NSMutableArray alloc] init];
int indexCount = 0; //keeps track of which index you are at.
for (NSString *sTemp in friendsList)
{
NSRange titleResultsRange = [sTemp rangeOfString:searchText options:NSCaseInsensitiveSearch];
if (titleResultsRange.length > 0)
{
[copyListOfItems addObject:sTemp]; //this is your name result
[searchedArrayOfImages addObject:[imageArray objectAtIndex:indexCount]]; //adds image that fits with the nameresult to array of searched images
}
indexCount++;
}
[searchArray release];
searchArray = nil;
}
Когда вы закончите поиск, ячейки будут обновлены следующим образом (согласно вашему фрагменту)
if(searching)
{
cell.textLabel.text = [copyListOfItems objectAtIndex:indexPath.row];
[cell.imageView setImageWithURL:[NSURL URLWithString:[searchedArrayOfImages objectAtIndex:indexPath.row]];
}
else
{
[cell.imageView setImageWithURL:[NSURL URLWithString:[imageArray objectAtIndex:indexPath.row]]
placeholderImage:[UIImage imageNamed:@"defaultPerson.png"]];
cell.textLabel.text = [friendsList objectAtIndex:indexPath.row];
}
Этого должно хватить ^^ удачи.