快速:更改特定单元格中的图像

时间:2018-08-08 12:12:08

标签: ios swift uicollectionviewcell

我有collectionView。我想更改特定单元格中的图像。

我使用以下代码:

func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {

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

    if indexPath.section == 1 && indexPath.row == 5{
        cell.cover.image = UIImage(named: "sfsdf.png")
    }
}

但是所有单元格中的图像都会改变。如何解决?

5 个答案:

答案 0 :(得分:0)

这是因为出队

func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {

    let myCell = cell as! MasterViewCell

    if indexPath.section == 1 && indexPath.row == 5{
        myCell.cover.image = UIImage(named: "sfsdf.png")
    }
    else {
        myCell.cover.image = UIImage(named: "other.png") // supply other image or access from model array 
    }
}

答案 1 :(得分:0)

您只需要在else部分中添加其他单元格的图像即可。

func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! MasterViewCell
        if indexPath.section == 1 && indexPath.row == 5 {
            cell.cover.image = UIImage(named: "sfsdf.png")
        } else {
            cell.cover.image = UIImage(named: "Other.png")
        }
    }

答案 2 :(得分:0)

您正在重用原型单元。因此,您应该提供else情况,以防止所有其他单元格中的更改。

func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {

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

    if indexPath.section == 1 && indexPath.row == 5{
        cell.cover.image = UIImage(named: "sfsdf.png")
    }
    else 
    {
        cell.cover.image = UIImage(named: "default.png") //change default.png with the name of your image
    }
}

答案 3 :(得分:0)

UITableView重复使用其单元格进行显示。因此,相同的单元格将显示为下一个。我们必须配置每个。

更改单元格配置时,始终为else语句写if条件。

if indexPath.section == 1 && indexPath.row == 5 {
    cell.cover.image = UIImage(named: "sfsdf.png")
} else {
    cell.cover.image = nil // OR use placeholder image. UIImage(named: "placeholder")
}

答案 4 :(得分:0)

您正在使用可重复使用的单元格,因此需要设置默认图片。

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

     cell.cover.image = nil // OR set default image

     if indexPath.section == 1 && indexPath.row == 5{
         cell.cover.image = UIImage(named: "sfsdf.png")
     }
}