Выделите ячейки в двух CollectionView - PullRequest
0 голосов
/ 28 сентября 2018

Я использую два CollectionView в одном ViewController.Каждый CollectionView имеет 5 ячеек.Я также использую isSelected для определения выбранной ячейки (и выделения выбранной ячейки) для каждой CollectionView.В каждом CollectionView может быть выделена только одна ячейка (выделено).

Все работает как надо, но есть одна проблема.

В симуляторе, когда я выбираю ячейку сИндекс от 0 до 3, все отлично работает.Но проблема возникает, когда я выбираю ячейку с индексом 4. Это выделяет ячейки с индексом 4 в обоих CollectionView.

Это происходит только тогда, когда ячейка с индексом 4 другого CollectionView не видна наэкран (я использую горизонтальную прокрутку для обоих видов коллекции, и только 3 из 5 ячеек видны одновременно на экране).

Ниже части моего кода:

var selectIndex = 1

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

    if collectionView == self.percentsCollectionView {
        let cell:PercentCollectionViewCell = collectionView.dequeueReusableCell(withReuseIdentifier: percentsCellIdentifiers[indexPath.item], for: indexPath) as! PercentCollectionViewCell

        if selectIndex == (indexPath as NSIndexPath).row
        {
            cell.isSelected = true
        }
        else
        {
            cell.isSelected = false
        }
        return cell
    }

    else {
        let cell:PersonCollectionViewCell = collectionView.dequeueReusableCell(withReuseIdentifier: personsCellIdentifiers[indexPath.item], for: indexPath) as! PersonCollectionViewCell

        if selectIndex == (indexPath as NSIndexPath).row
        {
            cell.isSelected = true
        }
        else
        {
            cell.isSelected = false
        }
        return cell
    }
}

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    selectIndex = (indexPath as NSIndexPath).row
    collectionView.reloadData()
    }

1 Ответ

0 голосов
/ 28 сентября 2018

selectIndex = (indexPath as NSIndexPath).row collectionView.reloadData()

эта часть точно не говорит, какую коллекцию выбрать.это просто индекс, и оба представления коллекции будут выбраны.Единственная причина, по которой вы не видите этого для 0-3, заключается в том, что вы не перезагружаете другое представление коллекции.но 4-й индекс должен перезагрузиться (когда вы прокрутите его, чтобы увидеть его), и он будет выбран.

вы должны использовать 2 разных индекса для каждого представления коллекции

например:

selectIndex1 и selectIndex2

...