簡體   English   中英

UITableViewCell內的空UICollectionView

[英]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

調試視圖層次結構,顯示一個具有適當單元格高度的空collectionView

這是因為您的單元格高度不會在快速滾動時更新。 UITableView緩存indexPath的行高只是為了計算滾動區域。 您需要正確設置約束並在heightForRowAtIndexPath:方法中調整單元格的高度。

應用heightForRowAtIndexPath:內部的邏輯,您的問題將得到解決。

快樂編碼!

我遇到過同樣的問題。 有時,我在tableviewcell中的集合視圖不會顯示collectionview單元。 我通過在主線程上調用collectionView重新加載來解決它。 我不完全知道原因,因為我在每個單元格上都有許多后台調用,並且正在主線程本身上重新加載tableview。 仍然必須在主線程上重新加載collectionview。

DispatchQueue.main.async {
    cell.colViewProperties.reloadData()
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM