Necesitaré personalizar la sección del encabezado de un UITableViewController
donde para cada sección se devuelve un texto de encabezado diferente (también se obtienen datos del origen de datos). Esto se logra usando lo siguiente:Personalizar la sección del encabezado para UITableViewController
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
NSArray *temp = [listOfMBeans allKeys];
DLog(@"MBean details: %@", temp);
NSString *title = [temp objectAtIndex:section];
DLog(@"Header Title: %@", title);
return title;
};
Esto funciona bien y puedo ver el resultado esperado. Sin embargo tengo que cambiar también el tamaño de fuente del texto y después de ver las preguntas similares He implementado el siguiente:
- (UIView *) tableview:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
DLog(@"Custom Header Section Title being set");
UIView *headerView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 30)] autorelease];
UILabel *label = [[[UILabel alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 30)] autorelease];
label.text = [tableView.dataSource tableView:tableView titleForHeaderInSection:section];
label.backgroundColor = [UIColor clearColor];
label.font = [UIFont boldSystemFontOfSize:14];
[headerView addSubview:label];
return headerView;
}
- (CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return 44.0;
}
Sin embargo parece que el código no se llama. Según tengo entendido, UITableViewController
se configura de manera predeterminada como delegado, pero parece que estoy equivocado.
El UITableViewController
se crea de esta manera (como parte de los datos jerárquicos):
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
ProjectDetails *detailViewController = [[ProjectDetails alloc] initWithStyle:UITableViewStyleGrouped];
detailViewController.project = [listOfMetrics objectAtIndex:indexPath.row];
// Push the detail view controller.
[[self navigationController] pushViewController:detailViewController animated:YES];
[detailViewController release];
}
¿Qué cambios, que debe hacer para hacer este trabajo? Gracias.
en realidad no es claro para mí, que lo que está pidiendo? – rptwsthi
asegúrate de configurar un nuevo delegado de vista de tabla, quizás en el método init de 'projectDetails'. – theiOSDude
@rptwsthi Básicamente, cómo hacer que mi UITableViewController ProjectDetails llame a viewForHeaderInSection para personalizar la vista de encabezado –