Ponieważ projekt widoków tabel używających stylu zgrupowanego znacznie się zmienił w iOS 7, chciałbym ukryć (lub usunąć) nagłówek pierwszej sekcji. Jak dotąd nie udało mi się tego osiągnąć.
Nieco uproszczony mój kod wygląda następująco:
- (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 ...
}
}
Jeśli zwrócę wysokość 0, pozostałe dwie metody nigdy nie zostaną wywołane z indeksem sekcji 0. Jednak pusty nagłówek sekcji jest nadal rysowany z domyślną wysokością. (W iOS 6 te dwie metody są wywoływane. Jednak widoczny wynik jest taki sam).
Jeśli zwrócę inną wartość, nagłówek sekcji otrzyma określoną wysokość.
Jeśli zwrócę 0,01, jest prawie poprawne. Jednak kiedy włączam w symulatorze "Niepoprawne kolory", oznacza to wszystkie komórki widoku tabeli (co wydaje się logiczną konsekwencją).
Odpowiedzi na pytanie UITableView: ukryj nagłówek z pustej sekcji wydają się wskazywać, że niektórym osobom udało się ukryć nagłówek sekcji. Ale może to dotyczyć stylu prostego (zamiast zgrupowanego).
Jak dotąd najlepszym kompromisem jest zwrócenie wysokości 0,5, co skutkuje nieco grubszą linią poniżej paska nawigacji. Byłbym jednak wdzięczny, gdyby ktoś wiedział, jak można całkowicie ukryć nagłówek pierwszej sekcji.
Aktualizacja
Według analizy caglara ( https://stackoverflow.com/a/19056823/413337 ) problem pojawia się tylko wtedy, gdy widok tabeli jest zawarty w kontrolerze nawigacyjnym.
section == 0
.