2011-05-08 10 views
6

Me gustaría poder actualizar programáticamente el título del pie de página de una sección dentro de una vista de tabla, mientras estoy escribiendo texto a través de un teclado. El teclado aparece cuando hago clic en una celda para hacer que su vista detallada de texto sea editable, por lo que me gustaría actualizar el título del pie de página sin volver a cargar desde la fuente de datos.Actualice el título del pie de página de la sección en UITableView sin recargar

De hecho, si hiciera esto, el teclado desaparecería, por lo que no es una buena forma de interacción. No he podido encontrar una buena solución a este problema ... ¿Alguna sugerencia?

Gracias

Respuesta

6

Si ha groupped tabla, puede utilizar:

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { 
    yourLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 17)]; //I'm not sure about the frame... 
    yourLabel.font = [UIFont systemFontOfSize:16]; 
    yourLabel.shadowColor = [UIColor whiteColor]; 
    yourLabel.shadowOffset = CGSizeMake(0, 1); 
    yourLabel.textAlignment = UITextAlignmentCenter; 
    yourLabel.textColor = RGB(76, 86, 108); 
    yourLabel.backgroundColor = [UIColor clearColor]; 
    yourLabel.opaque = NO; 
    return yourLabel; 
} 

Declarar yourLabel en su archivo .h. A continuación, se puede acceder a él a través de

yourLabel.text = @"whatever you want"; 

Por favor, compruebe si funciona :)

+1

Sí, probablemente funcione. Pero tendré que manejar una gran cantidad de grupos, por lo que no sería tan fácil para mí manejar todas esas etiquetas diferentes. Realmente trataría de hacerlo de una manera limpia ... – marzapower

+0

Por cierto, ¿qué dimensiones debería poner en la instancia de CGRect 'yourFrame'? – marzapower

+0

Puede colocar etiquetas en 'NSArray' y luego usar' for' loop. – akashivskyy

6

Sé que llego tarde a este hilo, pero he encontrado que puede simplemente hacer esto:

[self.tableView beginUpdates]; 
[self.tableView footerViewForSection:section].textLabel.text = @"Whatever"; 
[[self.tableView footerViewForSection:section].textLabel sizeToFit]; 
[self.tableView endUpdates]; 
1

Por primera sección (ziro)

[self.tableView footerViewForSection: 0] .textLabel.text = @ "test";

1

La respuesta de Mark Alldritt fue buena, pero a veces no ajusta el tamaño de la etiqueta correctamente. El ejemplo fijo está a continuación (para la sección == 0):

[self.tableView beginUpdates]; 
UILabel *footerLabel = [self.tableView footerViewForSection:0].textLabel; 

footerLabel.text = [self tableView:self.tableView titleForFooterInSection:0]; 
CGRect footerLabelFrame = footerLabel.frame; 
footerLabelFrame.size.width = self.tableView.bounds.size.width; 
footerLabel.frame = footerLabelFrame; 
[self.tableView endUpdates]; 
Cuestiones relacionadas