![](/img/trans.png)
[英]UICollectionView inside UITableViewCell returning empty always even though shows as selected
[英]Empty UICollectionView inside UITableViewCell
我已使用本教程將collectionView放在UITableView中。 https://ashfurrow.com/blog/putting-a-uicollectionview-in-a-uitableviewcell-in-swift/
UITableViewController是UITableView和每個單元格中不同集合視圖的數據源和委托。 問題是我想動態隱藏CollectionView並在collectionview為空時將其高度更改為0。 為此,我在CellForRowAtIndexPath中有此代碼
if (patients.paraclinicImage.count == 0){
[cell.collectionView setHidden:true];
cell.collectionViewHeight.constant = 0;
} else {
[cell.collectionView setHidden:false];
cell.collectionViewHeight.constant = 80;
}
通過使用此代碼,collectionView最初會正確顯示。 但是,快速滾動時,有時會以正確的單元格高度加載單元格,但是集合視圖將為空。 刷新單元格可以解決此問題。 刪除上面的代碼行也可以解決此問題。
這是兩幅圖像,顯示了首次渲染時以及多次滾動(以及單元的重新渲染)后單元的外觀。
滾動之前的問題如下圖所示
但滾動后的問題似乎喜歡下面
調試視圖層次結構,顯示一個具有適當單元格高度的空collectionView
這是因為您的單元格高度不會在快速滾動時更新。 UITableView緩存indexPath的行高只是為了計算滾動區域。 您需要正確設置約束並在heightForRowAtIndexPath:
方法中調整單元格的高度。
應用heightForRowAtIndexPath:
內部的邏輯,您的問題將得到解決。
快樂編碼!
我遇到過同樣的問題。 有時,我在tableviewcell中的集合視圖不會顯示collectionview單元。 我通過在主線程上調用collectionView重新加載來解決它。 我不完全知道原因,因為我在每個單元格上都有許多后台調用,並且正在主線程本身上重新加載tableview。 仍然必須在主線程上重新加載collectionview。
DispatchQueue.main.async {
cell.colViewProperties.reloadData()
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.