UICollectionView:突出显示随机单元

时间:2018-06-21 12:54:36

标签: ios swift uicollectionview

我有一个包含各种单元格的collectionview。可以一次选择一个,选择状态存储在我的业务逻辑中。如果选择了一个单元格,则会重新加载整个部分以更新UI以突出显示当前选定的单元格。

  func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    ...
    cell.setItemSelected(selected: selected)
    return cell
    }

我的问题是随机单元格会在短时间内突出显示。 我也实现了prepareForReuse(),但没有任何效果。

是什么原因造成的?

谢谢!

此处是请求的其他代码:

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

        let pendencyDeficiencyType = deficiencyTypes[indexPath.row]

        if let cell = collectionView.dequeueReusableCell(withReuseIdentifier: PendencyDetailCell.reuseIdentifier, for: indexPath) as? PendencyDetailCell{
            cell.titleLabel.attributedText = StringUtils.hyphenedText(pendencyDeficiencyType.rawValue)
            cell.indexPath = indexPath
            cell.delegate = self

            let selected = pendencyDeficiencyType == pendencyItem?.pendencyDeficiencyType
            cell.setItemSelected(selected: selected)

            return cell
        }
        return collectionView.dequeueReusableCell(withReuseIdentifier: PendencyDetailCell.reuseIdentifier, for: indexPath)
    }

override func prepareForReuse() {
    super.prepareForReuse()
    backgroundColor = Styling.cellDefaultColor
    titleLabel.textColor = .black
}

func setItemSelected(selected: Bool){
        layer.borderColor = selected ? Styling.heagPrimary.cgColor :  UIColor.darkGray.cgColor
        backgroundColor = selected ? Styling.cellSelectedColor : Styling.cellDefaultColor
        titleLabel.textColor = selected ? .white : .black
    }

1 个答案:

答案 0 :(得分:-1)

作为一种选择,您可以实现两个单独的单元。每个状态一个,并根据标志使用它。

OR

尝试根据标志使用不同的ReuseIdentifiers。