Da sich das Design von Tabellenansichten mit dem gruppierten Stil mit iOS 7 erheblich geändert hat, möchte ich den Header des ersten Abschnitts ausblenden (oder entfernen). Bisher habe ich es nicht geschafft.
Etwas vereinfacht sieht mein Code folgendermaßen aus:
- (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 ...
}
}
Wenn ich eine Höhe von 0 zurückgebe, werden die beiden anderen Methoden niemals mit dem Abschnittsindex 0 aufgerufen. Es wird jedoch weiterhin ein leerer Abschnittskopf mit der Standardhöhe gezeichnet. (In iOS 6 werden die beiden Methoden aufgerufen. Das sichtbare Ergebnis ist jedoch dasselbe.)
Wenn ich einen anderen Wert zurückgebe, erhält der Abschnittskopf die angegebene Höhe.
Wenn ich 0,01 zurückgebe, ist es fast richtig. Wenn ich jedoch im Simulator "Farbfehlausgerichtete Bilder" aktiviere, werden alle Zellen der Tabellenansicht markiert (was eine logische Konsequenz zu sein scheint).
Die Antworten auf die Frage UITableView: Header vor leerem Abschnitt ausblenden scheinen darauf hinzudeuten, dass es einigen Personen gelungen ist, den Header des Abschnitts auszublenden. Dies kann jedoch auch für den einfachen Stil gelten (anstelle des gruppierten Stils).
Der bisher beste Kompromiss ist die Rückgabe der Höhe 0,5, was zu einer etwas dickeren Linie unterhalb der Navigationsleiste führt. Ich würde mich jedoch freuen, wenn jemand weiß, wie der Header des ersten Abschnitts vollständig ausgeblendet werden kann.
Aktualisieren
Laut der Analyse von caglar ( https://stackoverflow.com/a/19056823/413337 ) tritt das Problem nur auf, wenn die Tabellenansicht in einem Navigationscontroller enthalten ist.
section == 0
.