Custom Header in tableView


#1

Обычный динамический tableView в обычном контроллере.

Делаю кастомный header, а он ни как не отображается - где-то что-то забыл, подскажите.

func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
        guard let header = view as? UITableViewHeaderFooterView else { return }
        header.textLabel?.textColor = .black
        header.textLabel?.font = .boldSystemFont(ofSize: 18)
        header.textLabel?.frame = header.frame
        header.textLabel?.textAlignment = .center
        header.textLabel?.text = "Some text"
    }
    private func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        return 30.0
    }

Но если исльпользовать простой метод изменения заголовка хедера, то всё видно…

func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
    return "Some text"
}

Где ошибся?


#2

как вариант попробовать это


#3

Да этот метод viewForHeaderInSection почему-то тоже результата не даёт: я почти все варианты испробовал со стековерфлоу.
Ваш попробую тоже вечером на всякий случай.

Тут похоже или какую-то настройку забыл или какая-то особенность может, что это обычный тейбл, а не контроллер…


#4

ни как не работает - результат как на скринах выше. (((

Даже попробовал так:

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        let cell = tableView.dequeueReusableHeaderFooterView(withIdentifier: "HeaderCell")
        cell?.textLabel?.text = "Some text"
        cell?.textLabel?.textColor = .black
        cell?.backgroundColor = .clear
        cell?.contentView.backgroundColor = .clear
        
        return cell
    } 

результат:

Те вариантов 3:

  1. Либо нет хедера, или ничего в нём нет, но высота отмеряется
  2. Есть хедер, но не удаётся изменить цвет бекраунда
  3. Есть хедер с тектом (метод titleForHeaderInSection), но опять же не могу изменить цвет бекраунда.
  4. Полностью кастомный так и не выходит реализовать.

#5

Что-то совсем запутался:

  • вот офф документация - там всё понятно
  • вот даже пример кастомного хедера. Но и там ни как не могу поменять цвет фона! Хотя в описании класса UITableViewHeaderFooterView чётко написано:

You can also assign an optional background view to the backgroundView property.

Но всё равно ничего не получается… Где-то у меня явно что-то не так )))


#6

Сделал через .xib, но результат меня не устроил: хедер при прокрутке таблицы вниз остаётся висеть сверху, а мне не надо так ))


#7

если правильно понял, то нужно сделать таблицу style grouped


#8

Этого должно быть достаточно и в делегате не нужно высоту указывать, но на старых iOS (10 и ниже) могут свои приколы быть, если поддерживаются лучше проверить.