UICollectionView - random cells are selected

后端 未结 3 1985
北海茫月
北海茫月 2021-01-23 12:08

I have a Horizontal UICollectionView like the horizontal Calender in iOS. Paging is enabled but not allowsMultipleSelection.

self.allowsMultipleSelection = fals         


        
3条回答
  •  -上瘾入骨i
    2021-01-23 12:27

    Take a class-level variable, say index

    var index = -1
    

    As you have said that multiple selections are not allowed so the following will do the job for you

    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
        index = indexPath.item
        collectionView.reloadData()
    }
    
    func collectionView(_ collectionView: UICollectionView, didDeselectItemAt indexPath: IndexPath) {
        let cell = collectionView.cellForItem(at: indexPath)
        if let cell = cell {
            cell.backgroundColor = indexPath.item == index ? .red :  .white
        }
    }
    

    Whenever user tap on any cell we save the position in index variable and then call the reloadData() to notify collectionView about the change In cellForRowAt we check if the current cell us selected we set the color to red otherwise white

提交回复
热议问题