Hola chicos. Tengo un problema para animar eliminaciones e inserciones en una UITableView. El hecho es que tengo diferentes alturas, algunos 44.0 y 135.0 ahora. Tengo uitableviewstyle agrupado con diferentes secciones. la primera fila de cada sección es una fila de agrupación. al hacer clic, elimino todas las filas de esta sección, excepto la fila de agrupación. pero esa animación se ve extraña, al animar (UITableViewRowAnimationTop) la celda de altura de 135px. Intenté establecer self.tableview.cellheight en 135 y comento el tableView: cellHeightForIndexPath-Method. Y la animación funciona bien. O configuro cada celda a 135 en tableView: cellHeightForIndexPath-Method.Problema con RowAnimation
Parece que el proceso de animación verifica la altura de la primera fila en las secciones que toman la altura de la celda para animar a todas las celdas siguientes.
¿Alguien una idea?
- (void) showhideGroup:(int)group
{
NSMutableArray *indexPaths = [[NSMutableArray alloc] init];
MCGroup *handleGroup = [groups objectAtIndex:group];
NSMutableArray *groupRows = [visibleGroupData objectForKey:handleGroup.title];
[self.tableView beginUpdates];
if (!handleGroup.hidden) {
int row = 0;
for(MobileFieldMapping *field in groupRows)
{
if (![field.datatype matchesInsensitive:GROUPING_CELL])
{
NSIndexPath *path = [NSIndexPath indexPathForRow:row inSection:group];
[indexPaths addObject:path];
}
row++;
}
row = 0;
for(NSIndexPath *index in indexPaths)
{
[groupRows removeObjectAtIndex:index.row-row];
row++;
}
[self.tableView deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationTop];
handleGroup.hidden=YES;
}
else
{
NSMutableArray *allGroupRows = [groupData objectForKey:handleGroup.title];
int row = 0;
for (MobileFieldMapping *field in allGroupRows)
{
if (![groupRows containsObject:field])
{
NSIndexPath *path = [NSIndexPath indexPathForRow:row inSection:group];
[indexPaths addObject:path];
[groupRows insertObject:field atIndex:row];
}
row++;
}
[self.tableView insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationTop];
handleGroup.hidden=NO;
}
[self.tableView endUpdates];
[indexPaths release];
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [self tableView:tableView cellForRowAtIndexPath:indexPath];
if ([cell isKindOfClass:[FormCell class]])
{
return [(FormCell*)cell height];
}
return 44.0;
}
debe publicar la vista de tabla delegar el código fuente. – karim
ok nadie tiene una idea ... parece tan – kaelum
He tenido esto funcionando, así que creo que es un error en tu código. Necesita publicar el código COMPLETO, o (mejor) hacer un pequeño ejemplo del problema. Además, debe ser más específico para describir exactamente cómo se ve "raro"; nadie puede ayudarlo con esa vaguedad. – Adam