Поскольку дизайн представлений таблиц с использованием сгруппированного стиля значительно изменился в iOS 7, я хотел бы скрыть (или удалить) заголовок первого раздела. Пока мне этого не удалось.
В несколько упрощенном виде мой код выглядит так:
- (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 ...
}
}
Если я верну высоту, равную 0, два других метода никогда не будут вызываться с индексом раздела 0. Тем не менее, пустой заголовок раздела все еще отображается с высотой по умолчанию. (В iOS 6 вызываются два метода. Однако видимый результат тот же.)
Если я верну другое значение, заголовок раздела получит указанную высоту.
Если я верну 0,01, это почти правильно. Однако, когда я включаю «Цвет несогласованных изображений» в симуляторе, он отмечает все ячейки табличного представления (что кажется логическим следствием).
Ответы на вопрос UITableView: скрыть заголовок из пустого раздела, похоже, указывают на то, что некоторым людям удалось скрыть заголовок раздела. Но это может относиться к простому стилю (вместо сгруппированного).
На данный момент лучшим компромиссом является возврат высоты 0,5, в результате чего линия под панелью навигации будет несколько более толстой. Однако я был бы признателен, если бы кто-нибудь знал, как можно полностью скрыть заголовок первого раздела.
Обновить
Согласно анализу Каглара ( https://stackoverflow.com/a/19056823/413337 ), проблема возникает только в том случае, если представление таблицы содержится в контроллере навигации.
section == 0
.