Este es mi codigo. Establezco la restricción de altura condicionalmente. cuando recargo toda la tabla funciona bien pero no funciona con reloadRowsAtIndexPaths

id superView = btn.superview.superview;
NSIndexPath *indexpath = [tbl indexPathForCell:superView];
AddYardTicketItemCell *cell = [tbl cellForRowAtIndexPath:indexpath];
if (cell.constantViewHeight.constant == 0) {
    cell.constantViewHeight.constant = 130;        
}
else
{
cell.constantViewHeight.constant = 0;         
}
[cell layoutIfNeeded];
[tbl reloadRowsAtIndexPaths:@[indexpath] withRowAnimation:UITableViewRowAnimationNone];
0
SThakur 24 ene. 2018 a las 09:16

3 respuestas

La mejor respuesta

La altura modificada de una celda requiere tableView para mover todas las siguientes celdas. Así que supongo que por eso reloadRowsAtIndexPaths no funcionó para ti. Trata de cambiar:

[tbl reloadRowsAtIndexPaths:@[indexpath] withRowAnimation:UITableViewRowAnimationNone];

Para:

[tbl beginUpdates];
[tbl setNeedsDisplay];
[tbl endUpdates];
2
Milan Nosáľ 24 ene. 2018 a las 07:21

Intente agregar el método delegado heightForRowAtIndexPath en lugar de proporcionar la altura en cellForRowAtIndexPath..Reload funcionará. Esa es la forma correcta de hacerlo.

0
Nishu_Priya 24 ene. 2018 a las 06:18

Al diseñar la celda en el guión gráfico, aplique todas las restricciones correctamente, es decir, aplique todas las restricciones requeridas: superior, inferior, izquierda y derecha para que la altura de la celda se pueda calcular automáticamente según su contenido.

self.tableView.rowHeight = UITableViewAutomaticDimension; 
self.tableView.estimatedRowHeight = 44.0;
0
Priya 24 ene. 2018 a las 06:24