Как отключить перезагрузку ячеек UITableView при прокрутке?

Я столкнулся с проблемой, когда мне не нужно, чтобы UITableView перезагружал свои ячейки, когда я просматриваю ее вверх и вниз. Простыми словами я создал пользовательские ячейки, у которых есть контент, который пользователь может расширить, щелкнув по нему. Например, у меня есть UILabel с большим количеством текста, который не отображается полностью, но пользователь может нажать на кнопку и развернуть текст и, следовательно, ярлык. Все это я реализую через [tableview beginUpdates] и [tableview endUpdates] . Но когда я нажимаю кнопку и расширяю текст или изображение и прокручиваю вниз до других ячеек, а затем UITableView конечно, перезагружаю содержимое моей ячейки, и текст снова скрывается, но ячейка остается того же размера, и это выглядит уродливым. Могу ли я каким-либо образом настроить механизм рециркуляции UITableView или обновить внутренний кеш ячейки?

Вы не можете отключить перезагрузку. Правильное решение состоит в том, чтобы обеспечить сохранение состояния каждой ячейки (расширенной или нет), поэтому, когда ячейку необходимо перезагрузить из-за прокрутки, вы обеспечиваете правильную высоту и содержимое для текущего состояния.

У вас есть несколько вариантов.

Тот, который многие люди упускают из виду, – это не использовать UITableView, а UIScrollView. Просто создайте каждую из своих «ячеек» как подкласс UIView и поместите их там, где вы хотите, в UIScrollView. Единственная проблема заключается в том, что вы должны сделать его похожим на представление таблицы, с разделителями между subviews и / или фоном в каждой ячейке.

Другим вариантом может быть сохранение вашей собственной ссылки на каждую ячейку и указание UITableView не использовать их повторно. Что-то вроде:

 - (void) initializeMyCells { self.cellArray = [NSMutableArray arrayWithCapacity:5]; for ( int i = 0; i < 5; ++i ) { MyCellType *cell = [[MyCellType alloc] initWithStyle: UITableViewCellStyleDefault reuseIdentifier:nil]]; [self.cellArray addObject:cell]; } } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { return self.cellArray[indexPath.row]; } 
  • UITableViewCell Segue не работает
  • Создание форм uitableview с полями uitext
  • Как вызвать tableView: cellForRowAtIndexPath: безопасно в UITableView?
  • Как обращаться к ячейке вне cellForRowAtIndexPath
  • Ведение текста в UITextFields в UITableViewCells
  • Удалить строку из UITableView Outside TableView Delegate
  • Пользовательский табличный вид (ячейка) с галочкой
  • Доступ к объектам NSMutableArray для использования в TableView
  • Несколько липких заголовков с использованием UITableview
  • UITableView didSelect делегат не вызван?
  • Мерцание UIRefreshControl с ячейками для самостоятельной калибровки
  • Давайте будем гением компьютера.