2009-10-10 19 views
21

estoy frente a un problema que no puedo resolver ... tengo una tabla con grupos cuya cabecera y sección de pie de la sección a ser visualizado correctamente después de iniciarse gracias aCambiar cabecera/pie de página de la sección UITableView ¿MIENTRAS SE EJECUTA la aplicación?

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 

y

- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section 

embargo, No puedo descifrar cómo actualizarlos más tarde, no sé cómo cambiar esos textos y es bastante frustrante porque en mi opinión no tenía que ser más difícil que cambiar una etiqueta de texto o lo que sea ... (algunos ". texto "propiedad ...)

Busqué en toda la documentación sin suerte ...

Cualquier ayuda es altamente & amablemente apreciada! Saludos, Enrico

+0

¿Hay una manera de actualizar los encabezados/pies de página sin volver a cargar la tabla completa ... o la sección completa? Actualice * SOLO * los encabezados/pies de página. – Patricia

+0

No creo que la actualización de solo una parte de la tabla de visitas le gane nada o que verá una diferencia en el rendimiento. –

Respuesta

25

En el método delegado, añaden una llamada a un método que devuelve el nombre de la sección, por ejemplo:

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { 
    switch (section) { 
     case firstSectionTag: 
      return [self firstSectionTitle]; 
     case secondSectionTag: 
      return [self secondSectionTitle]; 
     // ... 
     default: 
      return nil; 
    } 
} 

- (NSString *)firstSectionTitle { 
    // generate first section title programmatically, e.g. "return [[NSDate date] description];" 
} 

// ... 

Entonces, cuando es necesario actualizar el título de la sección, envíe un NSNotification que desencadena algo al igual que el siguiente método:

- (void)refreshTableSectionTitles:(NSNotification *)notification { 
    [tableView reloadData]; 
} 

Si la tabla es grande y desea un control más fino, pasar una NSNotification con un NSDictionary que contiene el fragmento que desea volver a cargar, lea el diccionario en -refreshTableSectionTitles para obtener la sección NSInteger, y use la vista de tabla -reloadSections:withRowAnimation: para volver a cargar esa sección específica.

7

Se puede utilizar:

-(void)reloadSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation 

Y en

-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 

definir su nuevo texto del encabezado en un comunicado.

Esto hará una buena animación al cambiar el encabezado/pie de página.

4

Usar esta línea en su código en el que desea cambiar el título:

[[self theTableViewToChangeItsHeader]reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationFade]; 
+1

en iOS 7, esto hace que las celdas de la sección desaparezcan. – malhal

+0

Esta pregunta estaba relacionada con ios 5.1. ¿Lo votaste seriamente? : D –

-4

En Su uso TableViewController

[self.tableView reloadSectionIndexTitles]; 
+0

no vuelve a cargar el texto del pie de página – malhal

+1

Esto solo se aplica a la barra de índice que se muestra a lo largo del lado derecho de la pantalla mientras se desplaza. – macserv

Cuestiones relacionadas