Хорошо, я попытаюсь угадать, как выглядит ваш код:)
Если изображения рисуются несколько раз, это означает, что вы добавляете их каждый раз, когда табличное представление запрашивает источник данных для ячейки:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView @"SomeID"];
if (cell == nil) {
// Create cell
}
UIImageView *imView = ... //Create and initialize view
[cell.contentView addSubview:imView];
...
return cell;
}
Таким образом, каждый раз, когда ваша ячейка появляется на экране (после того, как пользователь прокручивает таблицу), в ячейку добавляется новый экземпляр представления изображения.Правильный подход состоит в том, чтобы добавить представление изображения только один раз - при создании ячейки, а затем получить и настроить существующее представление изображения:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView @"SomeID"];
if (cell == nil) {
// Create cell
UIImageView *imView = ... //Create and initialize view
imView.tag = 1000; // or any other int value
[cell.contentView addSubview:imView];
}
UIImageView *iView = (UIImageView *)[cell.contentView viewWithTag:1000];
iView.image = ...// set required image
...
return cell;
}
Таким образом, при таком подходе каждый раз, когда ячейка повторно используется представлением таблицы существующего изображенияпредставление заполняется изображением, соответствующим текущей строке.
Я использовал отдельный идентификатор для каждой ячейки.
Обычно это не очень хорошая идея - в данном случаетаблица не сможет повторно использовать свои ячейки, и у вас могут возникнуть серьезные проблемы с производительностью