Las celdas de vista de tabla "saltan" al volver desde el controller de vista al controller de vista de tabla

Tengo un TableViewController , y hacer clic en una celda personalizada lo lleva a un WebViewController relacionado.

El problema que tengo es que cuando WebViewController "Atrás" en el WebViewController las celdas de Vista de tabla en TableViewController "salta".

introduzca la descripción de la imagen aquí

Una vez que la vista de tabla comienza a desplazarse, todos vuelven a la altura correcta. Supongo que tiene algo que ver con alturas en las TableViewController personalizadas de TableViewController , pero no estoy totalmente seguro.

TableViewController.m

Intentó:

 - (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { id model = self.Model[indexPath.row]; if ([model isKindOfClass:[Two self]]) { return 490; // As of 11/13/14 } else { // 2 other custom cells return tableView.rowHeight; // return the default height } } 

También probado:

 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { id model = self.Model[indexPath.row]; if ([model isKindOfClass:[One self]]) { ListTableViewCell *cellOne = [tableView dequeueReusableCellWithIdentifier:@"1Cell"]; CGFloat heightOne = [cellOne.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height; return heightOne + 2; } else if ([model isKindOfClass:[Two self]]) { ListTableViewCellTwo *cellTwo = [tableView dequeueReusableCellWithIdentifier:@"2Cell"]; CGFloat heightTwo = [cellTwo.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height; return heightTwo + 400; } else if ([model isKindOfClass:[Three self]]) { ListTableViewCellThree *cellThree = [tableView dequeueReusableCellWithIdentifier:@"3Cell"]; CGFloat heightThree = [cellThree.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height; return heightThree + 2; } else { return 300; } } 

ACTUALIZAR:

También probé [cell setNeedsUpdateConstraints]; y [cell setNeedsLayout]; .

También intentó configurar el estimatedHeight la estimatedHeight múltiples puntos diferentes, y también agregó la Automatic Row Dimension junto con eso.

¡La ayuda sería apreciada! Se publicará cualquier información adicional necesaria. ¡Gracias!

Solo apoyo iOS 8. Uso Auto Layout y Storyboards.

Información adicional del guión gráfico para Custom Cell 2: introduzca la descripción de la imagen aquíintroduzca la descripción de la imagen aquí

Restricciones del guión gráfico:

introduzca la descripción de la imagen aquí

Creo que no estableció la restricción correctamente. Tuve un problema similar al anterior y lo solucioné estableciendo las restricciones en el espaciado Leading, Trailing, Top y Bottom a UILabel.

Juega con las limitaciones. El comportamiento comenzará a cambiar. sigue adelante hasta que obtengas lo que quieres.

No parece una respuesta técnica decesnt de un profesional. Pero, que cómo se resuelve con esa restricción ficticia que la manzana no introdujo correctamente.

Además, testing [cell setNeedsUpdateConstraints]; antes de devolver la celda en cellForRowAtIndexPath. Y: [cell setNeedsLayout];

Finalmente resolví este problema, la key es calcular una altura estimada. Parece que cuanto más precisas estimaciones regresas, less brincar / choppiness.

 - (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath { switch (yourTypeOfCell) { case something: return estimatedHeight; break; case default: return defaultValue; break; } } 

Intente configurar theRowHeight estimatedRowHeight en viewDidLoad para su UITableView para ayudar a UIKit a adivinar la altura de fila de su tableView

 - (void)viewDidLoad { [super viewDidLoad]; self.tableView.estimatedRowHeight = 490.0; }