Есть проблема, где:
override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath)
вызывается, когда элемент выбран , но я не могу изменить какие-либо свойства ячейки из этого метода.
Я создал новый проект с урезанным UICollectionViewController для изменения цвета фона ячейки при выборе. Это также не работает. Вот оно:
import UIKit
private let reuseIdentifier = "Cell"
class CollectionViewController: UICollectionViewController {
override func numberOfSections(in collectionView: UICollectionView) -> Int {
return 1
}
override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 5
}
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath)
cell.backgroundColor = UIColor.blue
return cell
}
override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let cell = self.collectionView(self.collectionView, cellForItemAt: indexPath)
cell.backgroundColor = UIColor.green
}
}
Единственное, что я сделал в Storyboard, это удалил стандартный View Controller и заменил его на UICollectionViewController, создал подкласс UICollectionViewController и установил контроллер в раскадровке в качестве этого класса.
Также я могу подтвердить, что индексный путь ячейки возвращается из этого метода при вызове из метода didSelectItemAt
:
self.collectionView.indexPathsForSelectedItems