Comme la conception des vues de tableau utilisant le style groupé a considérablement changé avec iOS 7, je voudrais masquer (ou supprimer) le premier en-tête de section. Jusqu'à présent, je n'ai pas réussi à y parvenir.
Un peu simplifié, mon code ressemble à ceci:
- (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 je renvoie une hauteur de 0, les deux autres méthodes ne seront jamais appelées avec l'index de section 0. Pourtant, un en-tête de section vide est toujours dessiné avec la hauteur par défaut. (Dans iOS 6, les deux méthodes sont appelées. Cependant, le résultat visible est le même.)
Si je renvoie une valeur différente, l'en-tête de section obtient la hauteur spécifiée.
Si je renvoie 0,01, c'est presque correct. Cependant, lorsque j'active "Couleur des images mal alignées" dans le simulateur, cela marque toutes les cellules de la vue tableau (ce qui semble être une conséquence logique).
Les réponses à la question UITableView: masquer l'en-tête de la section vide semblent indiquer que certaines personnes ont réussi à masquer l'en-tête de la section. Mais cela peut s'appliquer au style simple (au lieu du style groupé).
Le meilleur compromis jusqu'à présent est de renvoyer la hauteur 0,5, ce qui donne une ligne un peu plus épaisse sous la barre de navigation. Cependant, j'apprécierais que quelqu'un sache comment le premier en-tête de section peut être complètement caché.
Mettre à jour
Selon l' analyse de caglar ( https://stackoverflow.com/a/19056823/413337 ), le problème ne survient que si la vue de table est contenue dans un contrôleur de navigation.
section == 0
.