UITableView heightForHeaderInSection не работает

#ios #uitableview

#iOS #uitableview

Вопрос:

У меня есть простой UITableView (пример проекта здесь), но заголовки разделов не соответствуют высоте, которую я устанавливаю в heightForHeaderInSection

 - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    return 40;
} 
  

Представление таблицы выглядит следующим образом. Заголовок раздела 1 имеет правильную высоту, но не другие.

введите описание изображения здесь

Когда я просматриваю представление с помощью приложения Reveal, кажется, что после последней ячейки в разделе есть своего рода нижний колонтитул.

введите описание изображения здесь

Что я делаю не так?

Комментарии:

1. Проверили, вызывается ли метод делегирования?

2. да heightForHeaderInSection , вызывается

3. @Jan Ваш стиль просмотра таблицы — групповой или обычный? я думаю, это потому, что ваш стиль — групповой.

4. Это представление сгруппированной таблицы

5. Сделайте это понятным, если вы не хотите, чтобы group еще вы должны добавить heightForFooter делегат и return 0 .

Ответ №1:

Кажется, что это работает

 - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
    return 0.0001f; // 0.0f does not work
}
  

или даже лучше, в loadView

 self.tableView.sectionFooterHeight = 0.0f;
  

Комментарии:

1. похоже на ошибку. Есть и другие ответы на эту проблему с тем же решением.

2. 2019 и все еще проблема. 1 для sectionFooterHeight = 0 , это, кажется, самое чистое решение.

3. 2020 и все еще проблема

4. 2021 и все еще проблема. в iOS10.

Ответ №2:

Swift:

Быстрая версия утвержденного ответа:

 override func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    return CGFloat.leastNonzeroMagnitude
}
  

Комментарии:

1. объединяя этот ответ с сообщением ниже, я использую tableView.sectionFooterHeight = CGFloat.leastNonzeroMagnitude

Ответ №3:

Угадайте в синем и изнутри с помощью приложения Reveal, попробуйте установить для нижнего колонтитула высоту 0.

 - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
    return 0;
}
  

Согласно документам:

Особые соображения До iOS 5.0 табличные представления автоматически изменяли высоту нижних колонтитулов на 0 для разделов, где TableView:viewForFooterInSection: возвращал нулевое представление. В iOS 5.0 и более поздних версиях вы должны возвращать фактическую высоту для каждого нижнего колонтитула раздела в этом методе.

Комментарии:

1. Возврат 0 heightForFooterInSection не работает. Я попытался также вернуться nil в viewForFooterInSection

2. @Jan: Похоже, это и хак, и решение:- (