0

I have a dynamic height collection view in table view cell. I used the approach @Igor in this topic. UICollectionView inside a UITableViewCell -- dynamic height?

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
      let cell = tableView.dequeueReusableCell(withIdentifier: "DraftCustomerTableViewCell", for: indexPath) as! DraftCustomerTableViewCell
      cell.data = notificationDraftListViewData[indexPath.section]
      cell.frame = tableView.bounds
      cell.collectionView.reloadData()
      cell.collectionViewHeightConstraint.constant = cell.collectionView.collectionViewLayout.collectionViewContentSize.height
      cell.layoutIfNeeded()
}

 
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
        dict[indexPath] = cell.frame.size.height
        
}
    
func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {

   return dict[indexPath] ?? CGFloat(450)
}

The issue is when I expand the tableview section first time, the cell's height is not calculate right. After expanding first time, the collectionView's height can been calculated correctly. I try to let my data[0].isExpand is true without taping the button and find the table view's cell height is correct. Please see the demo. Is there some approach can avoid this issue? thanks.

Demo: https://youtu.be/YJCJChCU0wQ

frank61003
  • 135
  • 9

0 Answers0