Как увеличить высоту UITableView внутри UITableViewCell?

#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. Вы должны указать это с помощью этого метода. Каждое изменение вложенных представлений ячейки необходимо для вычисления высоты и обновления высоты здесь. Это не ужасно.