UITableView rebota con estimatedRowHeight

Estoy usando autoLayout para mi CustomCell en xib, porque quiero tener una altura variable para filas basada en el text.

Ahora en mi VC.m

Estoy usando estas líneas de código

- (void)viewdidLoad { m_tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero]; m_tableView.estimatedRowHeight = 97.0; m_tableView.rowHeight = UITableViewAutomaticDimension; } 

aquí está mi function cellForRow

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; CustomCell *tableCell = (NotesCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (tableCell == nil) { NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil]; tableCell = [nib objectAtIndex:0]; } // Configure the cell... //This code is used to make the separator full width. Also the tableview separator insets should be set to zero tableCell.layoutMargins = UIEdgeInsetsZero; tableCell.preservesSuperviewLayoutMargins = NO; return tableCell; } 

Entonces, cada vez que actualizo una fila, llamo a estas líneas de código

 [m_tableView beginUpdates]; [m_tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:m_indexPath] withRowAnimation:UITableViewRowAnimationFade]; [m_tableView endUpdates]; 

Cuando hago esto, por Tableview simplemente rebota. No se que va mal

Saludos Ranjit

Esto está sucediendo porque cuando vuelve a cargar su celda, la vista de tabla solicita las alturas de todas las celdas nuevamente. A todas las celdas que estén fuera de la pantalla por encima de su position de desplazamiento se les pedirá sus alturas de fila estimadas y si son diferentes de su altura actual, provocará que las celdas cambien de altura y verá que la tabla rebota de esa forma.

Una vez calculadas sus celdas, debe almacenar en caching ese valor en algún lugar y luego implementar tableView:estimatedHeightForRowAtIndexPath: y devolver la altura real de las celdas si tienen una en lugar de su altura estimada.

Debería usar dequeueReusableCellWithIdentifier:forIndexPath lugar de la versión que está utilizando.

El que está utilizando no tendrá class de tamaño debido a que la celda devuelta no tiene padre. Es un problema que aparece en xcode 6 en adelante debido a los cambios en la class de tamaño.

Intente cambiar a esta versión que devuelve una celda que forma parte de la tabla y, por lo tanto, henetworkinga la colección traitCollection de las supervistas y ayuda a que el layout funcione correctamente.