¿Cómo puedo desactivar las recargas de las células de UITableView al desplazarse?

Me he encontrado con el problema cuando no necesito UITableView para volver a cargar sus celdas cuando lo desploop hacia arriba y hacia abajo. En palabras simples, creé celdas personalizadas que tienen contenido que el usuario puede expandir onclick en él. Por ejemplo, tengo una UILabel con mucho text en ella que no se muestra completamente, pero el usuario puede hacer clic en el button y ampliar el text y, en consecuencia, una label. Todo esto lo implemento mediante [tableview beginUpdates] y [tableview endUpdates] . Pero cuando hago clic en el button y expandir text o image y me desploop hacia abajo a otras celdas y luego hacia UITableView el contenido de mi celda y el text se oculta nuevamente pero la celda sigue siendo del mismo tamaño y esto se ve feo. ¿Puedo de alguna manera personalizar el mecanismo de reciclaje de UITableView o actualizar el caching interno de la célula?

Solutions Collecting From Web of "¿Cómo puedo desactivar las recargas de las células de UITableView al desplazarse?"

No puedes desactivar la recarga. La solución adecuada es asegurarse de que está guardando el estado de cada celda (expandido o no), por lo que cuando la celda necesita ser recargada debido al desplazamiento, proporciona la altura y el contenido adecuados para el estado actual.

Tienes pocas opciones.

Una que mucha gente pasa por alto es no usar un UITableView, sino un UIScrollView en su lugar. Simplemente cree cada una de sus "celdas" como subclass UIView y colóquelas donde desee en UIScrollView. El único problema es que tienes que hacer que parezca una vista de table, con separadores entre subvistas y / o backgrounds en cada celda.

Otra opción podría ser mantener su propia reference a cada celda y decirle a UITableView que no las reutilice. Algo como:

 - (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]; }