我有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")
}
}
但是所有单元格中的图像都会改变。如何解决?
答案 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")
}
}