首页 > 解决方案 > Swift - 自定义大小的 UITableViewCell 中的 UICollectionView 分页

问题描述

我正在实现自我调整,其中UITableViewCell包含UICollectionView根据从 API 接收到的项目数量扩展其高度。

视图的结构如下

UITableView

    UITableViewCell

        UICollectionView

            UICollectionViewCell

            UICollectionViewCell

            UICollectionViewCell

UICollectionView接收到新数据时,UITableViewCell帧将更新为以下代码

layoutIfNeeded()
collectionView.reloadData()
collectionView.collectionViewLayout.invalidateLayout()
collectionView.layoutIfNeeded()

collectionView.snp.updateConstraints { make in
    make.height.equalTo(collectionView.collectionViewLayout.collectionViewContentSize).priority(.high)
}

有问题的部分是将滚动分页添加到UICollectionView. 自调整代码会导致触发请求willDisplay cell的每个单元格调用它来触发,它会获取新数据,更新高度,再次触发 API 请求,这是一个无限循环。UICollectionView// Fetch more dataUICollectionView

func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {
    if indexPath.item == collectionView.numberOfItems(inSection: indexPath.section) - 1 {
        // Fetch more data
    }
}

知道如何避免这个循环吗?谢谢。

标签: iosswiftuitableviewuicollectionview

解决方案


推荐阅读