#ios #uitableview #layout #header #swift3
#iOS #uitableview #макет #заголовок #swift3
Вопрос:
Кодирование в Swift 3. Иметь представление таблицы с пользовательскими ячейками и заголовком.
У меня есть представление таблицы с пользовательскими ячейками и заголовками. Заголовки содержат две (2) метки и имеют динамическую высоту ячейки, поскольку метки могут быть длинными. Моя проблема заключается в том, что при первом настройке TableView и разделов ярлык отображается так, как должен, ОДНАКО после прокрутки вниз и последующего резервного копирования макет заголовков каким-то образом ломается.
Как вы можете видеть ниже, после того, как я прокручиваю вниз, а затем возвращаюсь к ячейкам, метка обрезается.
После распечатки того, какие методы вызываются, я обнаружил, что при первой прокрутке вниз по 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, метки обрезаются?
Есть идеи?
Комментарии:
1. @ozgur Я попытался проголосовать, но случайно «отменил» его, и это мне не позволит. Не могли бы вы опубликовать свой ответ, чтобы я мог поддержать вас? Еще раз спасибо!
Ответ №1:
Вы должны вернуть header
вместо метода header.contentView
from tableView: viewForHeaderInSection:
:
override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let header = tableView.dequeueReusableCell(...
...
return header
}