Swift collectionView方法未更改可见单元格

时间:2018-07-05 15:34:50

标签: ios swift uicollectionview uicollectionviewcell

我有一个UICollectionView,它有一个偏移的单元格,向用户显示有更多的滚动内容。问题是偏移单元格应该具有alpha值为1的挂锁。当我重复使用该单元格并执行检查时,这确实有效。

在初始加载时,不会在偏移单元格上调用检查已购买课程的内部方法。

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

if let purchased = purchasedCourses {
        if !purchased.contains(courses[indexPath.row].type) {
            print("CELL: \(indexPath.row)")
            cell.padlock.alpha = 1
        }
    }
...
}

有没有办法解决这个问题?

我尝试过:layoutIfNeeded()setNeedsLayout() reloadItems()

2 个答案:

答案 0 :(得分:1)

您可以尝试

if !purchased.contains(courses[indexPath.row].type) {
        print("CELL: \(indexPath.row)")
        cell.padlock.alpha = 1
     }
     else {

         cell.padlock.alpha = 0
}

OR

 cell.padlock.alpha = purchased.contains(courses[indexPath.row].type ? 0 : 1

答案 1 :(得分:0)

else子句之后放入if子句,并在else部分中设置单元格的默认行为。这里的单元格将被重用,因此,如果您的if条件成立,则所有其他单元格将具有与您未提供else的默认属性相同的属性。

if !purchased.contains(courses[indexPath.row].type) {
        print("CELL: \(indexPath.row)")
        cell.padlock.alpha = 1
}else {
    cell.padloack.alpha = //your default value of alpha
}