Проблема UICollectionReusableView (проблема повторного использования) - PullRequest
0 голосов
/ 03 апреля 2019

UICollectionReusableView

У меня есть UICollectionView (допускается множественный выбор) внутри UICollectionReusableView.Когда я выбираю любую ячейку UICollectionView, она меняет backgroundColor = .blue, и этот выбор обрабатывается свойством overriding isSelected UICollectionCell.Проблема в том, что Когда я делаю прокрутку, выбор удаляется, и он показывает выбор в других UICollectionReusableView.

1 Ответ

0 голосов
/ 03 апреля 2019

Вам необходимо установить цвет по умолчанию в методе prepareForReuse.Также вы можете проверить свойство isSelected здесь.Также вы можете позвонить collectionView.reloadData() в prepareForReuse из UICollectionReusableView

class VC: UIViewController, UICollectionViewDelegate {

    // first arg - section, second - selected indexes
    typealias DataSource = [Int: [IndexPath]]
    var selectedRows: DataSource = [:]


    func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {
        cell.isSelected = selectedRows[indexPath.section]?.contains(indexPath) ?? false
    }

    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
        let contains = selectedRows[indexPath.section]?.contains(indexPath) ?? false
        if contains {
            var current = selectedRows[indexPath.section]
            current.removeAll { $0 == indexPath }
            selectedRows[indexPath.section] = current
        } else {
            selectedRows[indexPath.section] = (selectedRows[indexPath.section] ?? []) + [indexPath]
        }
        collectionView.cellForItem(at: indexPath).isSelected = !contains
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...