#ios #swift #uitableview
#iOS #swift #uitableview
Вопрос:
Я просто создаю UITableview
(второй UITableview
) внутри UItableviewcell
. Мне нужно увеличить UItableviewcell
высоту на основе второго номера ячейки UITableView (вторые UITableview's
ячейки имели другую высоту).
1-й просмотр таблицы:
extension ViewController:UITableViewDelegate, UITableViewDataSource{
// no of row #1
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "OrderTimelineCell", for: indexPath) as! OrderTimelineCell
return cell;
}
}
1-я ячейка tableview:
override func awakeFromNib() {
tableView.layoutIfNeeded()
tableView.heightAnchor.constraint(equalToConstant: tableView.contentSize.height).isActive = true //always return 44*#cells
}
extension OrderTimelineCell:UITableViewDelegate, UITableViewDataSource{
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "TimelineTableViewCell", for: indexPath) as! TimelineTableViewCell
cell.label.text = array[indexpath.row] // text height different
return cell
}
}
Я ожидаю, что на выходе будут отображаться все ячейки Second UITableview
внутри 1-й UITableview
ячейки.
но фактический результат — высота ячейки == # нет ячейки * 44
Ответ №1:
Вам нужно указать высоту в этом методе:
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if indexPath.row == indexOfExtendedCell {
return 100 // or another height
}
return 44
}
Комментарии:
1. не хотите указывать статически (возвращать 100). потому что динамически текст попадает внутрь ячейки
2. Вы должны указать это с помощью этого метода. Каждое изменение вложенных представлений ячейки необходимо для вычисления высоты и обновления высоты здесь. Это не ужасно.