2015-06-09 3 views
0

Я хочу изменить конкретный UIImageView внутри UITableViewCell с этим:изображения меняются случайным образом в ячейке таблицы просмотра

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    [self.tableView beginUpdates]; 
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
    UYLTextCell *textCell = (UYLTextCell *)cell; 
    textCell.selected = YES; 
    //get and show the image at selected cell 
    textCell.testImage.image = [UIImage imageNamed:@"image280280.jpg"]; 
    //[tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic]; 
    [self.tableView endUpdates]; 
} 

Но то, что произошло некоторое ячейка имела свое изображение View, даже если она не была нажата.

+0

Можете ли вы опубликовать реализацию метода 'cellForRowAtIndexPath'? –

ответ

0

Виды таблиц повторного использования ячеек. Когда ячейка прокручивается с экрана, она добавляется в очередь и будет повторно использоваться для прокрутки следующей ячейки на экране. Это означает, что код конфигурации вашей ячейки в tableView:cellForRowAtIndexPath: должен быть достаточным для правильной настройки любой ячейки, включая ячейки, которые ранее были выбраны с помощью другого indexPath. В tableView:didSelectRowAtIndexPath: сохраните выбранный путь указателя в свойстве и используйте это свойство, чтобы настроить свою ячейку в tableView:cellForRowAtIndexPath:. Изображение должно быть установлено в tableView:cellForRowAtIndexPath: независимо от того, выбрана ли ячейка или нет (если вы не реализуете prepareForReuse в своей пользовательской ячейке).

+1

Вам не нужно перезагружать всю таблицу - это вызовет мерцание. Это нормально изменить изображение в 'didSelectRowAtindexPath' до тех пор, пока' cellForRowAtIndexPath' возвращает значение, отличное от нуля (которое будет с момента выбора строки). Скорее всего, что OP неправильно перенастраивает состояние ячейки в 'cellForRowAtIndexPath', однако – Paulw11

+0

Согласен, хотя я предпочитаю, чтобы код конфигурации находился в одном месте. Я все равно обновил свой ответ. – johnpatrickmorgan

+0

У вас может быть другой метод, который настраивает ячейку, которую вы вызываете из 'cellForRowAtIndexPath' и, скажем,' didSelectRowAtIndexPath', но очень неэффективно перезагружать весь просмотр таблицы только для обновления одной ячейки. – Paulw11

Смежные вопросы