Como el diseño de las vistas de tabla que utilizan el estilo agrupado cambió considerablemente con iOS 7, me gustaría ocultar (o eliminar) el encabezado de la primera sección. Hasta ahora no he logrado lograrlo.
Algo simplificado, mi código se ve así:
- (CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
if (section == 0)
return 0.0f;
return 32.0f;
}
- (UIView*) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
if (section == 0) {
UIView* view = [[UIView alloc] initWithFrame: CGRectMake(0.0f, 0.0f, 640.0f, 0.0f)];
return view;
}
return nil;
}
- (NSString*) tableView:(UITableView *) tableView titleForHeaderInSection:(NSInteger)section
{
if (section == 0) {
return nil;
} else {
// return some string here ...
}
}
Si devuelvo una altura de 0, los otros dos métodos nunca serán llamados con el índice de sección 0. Sin embargo, un encabezado de sección vacío todavía se dibuja con la altura predeterminada. (En iOS 6, se llaman los dos métodos. Sin embargo, el resultado visible es el mismo).
Si devuelvo un valor diferente, el encabezado de la sección obtiene la altura especificada.
Si devuelvo 0.01, es casi correcto. Sin embargo, cuando enciendo "Color de imágenes desalineadas" en el simulador, marca todas las celdas de la vista de tabla (lo que parece ser una consecuencia lógica).
Las respuestas a la pregunta UITableView: ocultar el encabezado de la sección vacía parecen indicar que algunas personas lograron ocultar el encabezado de la sección. Pero podría aplicarse al estilo simple (en lugar del agrupado).
El mejor compromiso hasta ahora es devolver la altura 0.5, lo que resulta en una línea algo más gruesa debajo de la barra de navegación. Sin embargo, agradecería que alguien supiera cómo se puede ocultar completamente el encabezado de la primera sección.
Actualizar
Según el análisis de caglar ( https://stackoverflow.com/a/19056823/413337 ), el problema solo surge si la vista de tabla está contenida en un controlador de navegación.
section == 0
.