Comme la conception des vues de table utilisant le style groupé a considérablement changé avec iOS 7, je voudrais masquer (ou supprimer) l'en-tête de la première section. Jusqu'à présent, je n'ai pas réussi à le faire.
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 {
// retourner une chaîne de caractères ici ...
}
}
Si je retourne 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 retourne une valeur différente, l'en-tête de section obtient la hauteur spécifiée.
Si je retourne 0.01, c'est presque correct. Cependant, lorsque j'active "Color Misaligned Images" dans le simulateur, cela marque toutes les cellules de la table de vue (ce qui semble être une conséquence logique).
Les réponses à la question UITableView: hide header from empty section semblent indiquer que certaines personnes ont réussi à cacher l'en-tête de section. Mais cela pourrait s'appliquer au style simple (au lieu du style groupé).
Le meilleur compromis jusqu'à présent est de retourner la hauteur 0.5, ce qui donne une ligne un peu plus épaisse sous la barre de navigation. Cependant, j'apprécierais si quelqu'un sait comment masquer complètement l'en-tête de la première section.
Mise à jour
Selon l'analyse de caglar (https://stackoverflow.com/a/19056823/413337), le problème survient uniquement si la table de vue est contenue dans un contrôleur de navigation.