长滚动后,UICollectionView不显示所选数据

时间:2018-04-04 10:32:02

标签: ios swift uicollectionview

我有一个UICollectionView,其中有五个自定义单元需要在特定条件下渲染,生成单元格。现在我遇到的问题是考虑我在特定索引处选择了一个单元格,现在我向下滚动,现在我再次滚动。当UICollectionView停止滚动时,如果索引与我们选择的索引相同,则UICollectionView不会将该单元格显示为已选中。但是现在如果我甚至尝试移动单元格,甚至一点点,UICollectionView将单元格显示为选定的单元格。 以下是我在 prefetchItem

中编写的代码
(cell as? PATemplateTypeOneCollectionCell)?.fillCellData(row: indexPath.row,section:indexPath.section, paCategoryQuestions: currentIndexQuestion, paQuestionCollection: currentIndexCollection)
                    cell!.alpha = 0.4
                    if self.multipleIndexPathsArray[indexPath.section][0] != []{                         
                        collectionView.selectItem(at: self.multipleIndexPathsArray[indexPath.section][0], animated: true, scrollPosition: .right)
                    }
                    else{
                        print("self.multipleIndexPathsArray[indexPath.section][0] is empty")
                    }

UICollectionViewCell:

override var isSelected: Bool {
didSet {
    if isSelected {
        self.alpha = 1.0
        self.layer.borderWidth = 2.0
        self.layer.borderColor = ColorConstants.colorFromHexString(hexString: paCategoryQuestions.selection_color).cgColor
    }else {
        self.alpha = 0.4
        self.layer.borderWidth = 1.0
        self.layer.borderColor = UIColor.lightGray.cgColor
    }
}

请你们帮忙解决这个问题。

1 个答案:

答案 0 :(得分:0)

经过数小时的思考后,我遇到了一个解决方案。因此,在长滚动后我的cellForItem没有呈现选中的正确滚动,我尝试的是识别scrollViewDidEndDecelerating的委托fileprivate func checkIfCellIsSelected(){ for eachCell in afterPaymentPACollectionView.visibleCells{ let indexPath = afterPaymentPACollectionView.indexPath(for: eachCell) for eachIndexSelected in multipleIndexPathsArray{ if eachIndexSelected.contains(indexPath!){ afterPaymentPACollectionView.selectItem(at: indexPath, animated: true, scrollPosition: .right) } } } } //MARK: UIScrollViewDelegate func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) { checkIfCellIsSelected() } 。并通过使用我保存的值数组识别先前是否选择了当前可见的indexPath单元格。以下代码对我有用:

mpmath