Esta es la primera vez que hago una pregunta aquí, pero debo decir que este sitio me ha sido de gran ayuda en los últimos meses (iphone-dev- sabio), y te agradezco por eso.UITableView: bloqueo al agregar una vista de pie de página de secciones en la sección vacía
Sin embargo, no encontré ninguna solución para este problema que tengo: Tengo un UITableView con 2 secciones, y no hay filas cuando la aplicación se inicia por primera vez. El usuario puede completar las secciones más tarde como lo desee (el contenido no es relevante aquí). El UITableView se ve bien cuando se llena con filas, pero se ve bastante feo cuando no hay ninguno (las dos secciones de encabezado están pegadas juntas sin espacio en blanco entre ellas). Es por eso que me gustaría agregar una buena vista "Sin fila" en el medio cuando no hay fila.
que utilizan viewForFooterInSection:
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
if(section == 0)
{
if([firstSectionArray count] == 0)
return 44;
else
return 0;
}
return 0;
}
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
if(section == 0)
{
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(200, 10, 50, 44)];
label.backgroundColor = [UIColor clearColor];
label.textColor = [UIColor colorWithWhite:0.6 alpha:1.0];
label.textAlignment = UITextAlignmentCenter;
label.lineBreakMode = UILineBreakModeWordWrap;
label.numberOfLines = 0;
label.text = @"No row";
return [label autorelease];
}
return nil;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 2;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if(section == 0)
{
return [firstSectionArray count];
}
return [secondSectionArray count];
}
Esto funciona muy bien: la opinión de pie de página sólo aparece cuando no hay ninguna fila en la sección 0. Pero mis aplicación se bloquea cuando entro en modo de edición y elimina la última fila en la sección 0:
error de aserción en - [UIViewAnimation initWithView: indexPath: endRect: endAlpha: startFraction: endFraction: curva: animateFromCurrentPosition: shouldDeleteAfterAnimation: edición:] terminación de aplicación debido a excepción no detectada 'NSInterna lInconsistencyException ', razón:' La fracción de detención de animación de celda debe ser mayor que la fracción de inicio '
Esto no ocurre cuando hay varias filas en la sección 0. Solo ocurre cuando solo queda una fila.
Aquí está el código para el modo de edición:
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
// If row is deleted, remove it from the list.
if (editingStyle == UITableViewCellEditingStyleDelete) {
// Find the book at the deleted row, and remove from application delegate's array.
if(indexPath.section == 0)
{ [firstSectionArray removeObjectAtIndex:indexPath.row]; }
else
{ [secondSectionArray removeObjectAtIndex:indexPath.row]; }
// Animate the deletion from the table.
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
withRowAnimation:UITableViewRowAnimationBottom];
[tableView reloadData];
}
}
¿Alguien tiene alguna idea de por qué está sucediendo esto? Gracias
¡Eres mi héroe! ¡Hacer que la celda "sin datos" 2 píxeles más pequeña lo hiciera funcionar! Muchas gracias! (y digo, ya había pensado en la segunda solución pero no pude hacerlo funcionar) Todavía tengo un pequeño problema: el fondo de la tabla de visión es blanco ahora cuando no hay fila en la sección 0. me gustó más cuando estaba lleno de celdas vacías (ver imagen aquí: http://yfrog.com/izuitableviewproblemp). ¿Algún consejo? Gracias de nuevo David, has hecho mi día! – nmondollot
no hay grandes ideas allí, tal vez vale la pena una pregunta por separado. –
bien, eso es lo que hice. Gracias – nmondollot