Como o design das visualizações de tabela usando o estilo agrupado mudou consideravelmente com o iOS 7, gostaria de ocultar (ou remover) o primeiro cabeçalho da seção. Até agora não consegui.
Um pouco simplificado, meu código fica assim:
- (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 ...
}
}
Se eu retornar uma altura de 0, os outros dois métodos nunca serão chamados com o índice de seção 0. Mesmo assim, um cabeçalho de seção vazio ainda é desenhado com a altura padrão. (No iOS 6, os dois métodos são chamados. No entanto, o resultado visível é o mesmo.)
Se eu retornar um valor diferente, o cabeçalho da seção obtém a altura especificada.
Se eu retornar 0,01, é quase correto. No entanto, quando eu ligo "Color Misaligned Images" no simulador, ele marca todas as células de visualização da tabela (o que parece ser uma consequência lógica).
As respostas à pergunta UITableView: ocultar o cabeçalho da seção vazia parecem indicar que algumas pessoas tiveram sucesso em ocultar o cabeçalho da seção. Mas pode se aplicar ao estilo simples (em vez do agrupado).
O melhor compromisso até agora é retornar a altura 0,5, resultando em uma linha um pouco mais grossa abaixo da barra de navegação. No entanto, agradeceria se alguém souber como o cabeçalho da primeira seção pode ser completamente oculto.
Atualizar
De acordo com a análise de caglar ( https://stackoverflow.com/a/19056823/413337 ), o problema só surge se a visualização da tabela estiver contida em um controlador de navegação.
section == 0
.