一行中的UITableView和UICollectionView重复使用第一行中的集合

时间:2018-07-27 16:27:46

标签: ios swift uitableview uicollectionview uicollectionviewcell

我有一个UITableView,每个单元格中都有一个UICollectionView。

问题在于表重用了第一个单元格数据,因此它在最新的表单元格中显示了第一个集合...

UITableView代码-

DATABASE

以及UITableViewCell中的UICollectionView-

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "tableCell", for: indexPath) as! ProjectTableViewCell

    if !didIndex{
        cell.i = i
        i += 1
        if i >= projects.count{
            i = 0
            didIndex = true
        }
    }

    return cell
}

我检查了代码,它看起来像UICollectionView中的结果,cellForItemAt没问题,所以我认为问题是表中单元格的重用,试图找到解决方案!

谢谢大家!

已解决 我用了indexPath.section

1 个答案:

答案 0 :(得分:0)

您不应该为单元格分配索引-如果非常脆弱,则应使用此索引。如果移动或删除单元格会发生什么?

您似乎将i用作assetCollections中的索引,在这种情况下为什么不…

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "tableCell", for: indexPath) as! ProjectTableViewCell    
    cell.assetCollection = assetCollections[indexPath.section]
    return cell
}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

    photosAsset = (PHAsset.fetchAssets(in: assetCollection, options: nil) as AnyObject!) as! PHFetchResult<AnyObject>!

    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "collectionCell", for: indexPath) as! ProjectsCollectionViewCell

    let asset: PHAsset = self.photosAsset[indexPath.item] as! PHAsset

    PHImageManager.default().requestImage(for: asset, targetSize: self.assetThumbnailSize, contentMode: .aspectFill, options: nil, resultHandler: {(result, info)in
        if result != nil {
            cell.imageView.image = result
        }
    })
    return cell
}