更改单元格

时间:2018-05-06 07:58:21

标签: ios swift uicollectionview

我正在开发基于this tutorial的测验应用。本教程假设所有问题都包含图像。但是,对于我的情况,并非所有问题都包含图像。所以我修改了QuizCVCell.swift,如下所示。如果imgName为空,则不会设置图像。此外,如果没有图片,btn1将直接放在lblQue下。如果有图片,btn1将被置于图片下方。

guard let unwrappedQue = question else { return }
lblQue.text = unwrappedQue.questionText
btn1.setTitle(unwrappedQue.options[0], for: .normal)
btn2.setTitle(unwrappedQue.options[1], for: .normal)
btn3.setTitle(unwrappedQue.options[2], for: .normal)
btn4.setTitle(unwrappedQue.options[3], for: .normal)

if unwrappedQue.imgName.isEmpty {
    btn1.topAnchor.constraint(equalTo: lblQue.bottomAnchor, constant: 10).isActive=true
} else {
    imgView.image = UIImage(named: unwrappedQue.imgName)
    btn1.topAnchor.constraint(equalTo: imgView.bottomAnchor, constant: 10).isActive=true
}

这很好用,但是当我按下一步移动到下一个问题时会出现问题。如果当前问题不包含图像但下一个问题确实有图像,那么下一个问题中的图像将无法在更改单元格时显示。怎么解决这个?是否需要重置更改单元格上的UICollectionView

1 个答案:

答案 0 :(得分:1)

每次使用constraint时,都会添加新的NSLayoutConstraint - 对象。细胞重复使用后,它们开始相互冲突。

您应该在awakeFromNib - 方法中构造一次所有约束并存储其引用。然后根据图像优先级更改isActive属性。