Как изменить высоту ячейки внутреннего представления таблицы в iOS?
У меня динамическое табличное представление внутри статического табличного представления. Я не могу изменить высоту ячейки в зависимости от содержимого ячейки. Я пробовал различные методы, такие как
func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableView.automaticDimension
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if (ProfileData.profileViewType == .favourite) {
if let cell = tableView.dequeueReusableCell(withIdentifier: "profileCell", for: indexPath) as? ProfileCell { // gives EXC_BAD_ACCESS in SimpleCheckbox library
cell.favouritesTitleLabel.numberOfLines = 0
cell.favouritesTitleLabel.sizeToFit()
print(cell.favouritesTitleLabel.text)
let height = cell.favouritesTitleLabel.text!.height(withConstrainedWidth: cell.frame.width - 64, font: UIFont(name: "Roboto", size: 17.0)!)
print(height + 16)
return height + 16
}
}
return UITableView.automaticDimension
}
Я пробовал настройку UITableView.automaticDiemension
, но это не подстраивается под текстовое представление. Это становится больше. Если я попробую tableView.dequeueReusableCell(withIdentifier: "profileCell") as! ProfileCell
Я получаю только содержимое двух ячеек, а остальные не получают текстовое значение.
Текущий снимок экрана интерфейса пользователя: снимок экрана интерфейса пользователя
Я установил следующую конфигурацию представления таблицы в viewDidLoad()
:
profileTableView = ProfileSectionTableView()
profileTableView.profileDelegate = self
profileSectionTableView.delegate = profileTableView
profileSectionTableView.dataSource = profileTableView
profileSectionTableView.rowHeight = UITableView.automaticDimension
profileSectionTableView.estimatedRowHeight = 44
1 ответ
Когда ты позвонил func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath)
, вы должны установить cellData
еще раз, но получить данные с ячейкой. Затем рассчитайте высоту.