2016-10-06 4 views
2

Кодирование в Swift 3. Имеет таблицуView с пользовательскими ячейками и заголовком.heightForHeaderInSection только называется один раз

У меня есть таблицаView с пользовательскими ячейками и заголовками. Заголовки имеют две (2) метки в них и имеют динамические высоты ячеек, поскольку эти метки могут быть длинными. Моя проблема - первый раз, когда tableView и разделы сконфигурированы, ярлык отображается, как и должно быть, ОДНАКО, после прокрутки вниз, а затем резервное копирование структуры заголовков как-то ломается.

When tableView first loads and user scrolls down everything appears fine

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

After scrolling down and back up label is cut off

После печати, какие методы называют я обнаружил, что в первый раз прокрутка вниз Tableview следующих два (2) Функция коррекции называется.

override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { 
    print("\(section) heightForHeaderInSection") 
    print("\(section) returning AUTO for header") 
    return UITableViewAutomaticDimension 
} 

override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { 
    print("\(section) viewForHeaderInSection") 
    let header = tableView.dequeueReusableCell(withIdentifier: "QuestionHeader") as! QuestionHeader 
    header.delegate = self 
    header.contentView.backgroundColor = UIColor.groupTableViewBackground 
    header.questionTextLabel.text = String(questionStringArray[section]) 
    header.questionNumberLabel.text = (String(section + 1) + ")") 
    return header.contentView 
} 

Но когда я прокрутить назад вверх ТОЛЬКО функция viewForHeader называется, и я не думаю, потому что высота больше не устанавливается на UITableViewAutomaticDimension метки получают обрезание?

Любые идеи?

+0

@ozgur прав! –

+0

@ozgur Я попробовал upvoting, но случайно «отменил» его, и это не позволит мне. Не могли бы вы опубликовать свой ответ, чтобы я мог вас поддержать? Еще раз спасибо! –

ответ

1

Вы должны вернуть header вместо header.contentView из tableView: viewForHeaderInSection: метода:

override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { 
    let header = tableView.dequeueReusableCell(... 
    ... 
    return header 
} 
Смежные вопросы