Быстрые вычисления массива indexPath - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь выяснить, как изменить indexPath для вставки в collectionView для функции peformBatchUpdates, используя .map

Скажем, у меня есть элементы 1 2 3 4 5 6 7 в collectionView и массив indexPaths для удаления как

▿ 2 elements
  ▿ 0 : 2 elements
    - 0 : 0
    - 1 : 0
  ▿ 1 : 2 elements
    - 0 : 0
    - 1 : 1

и массив indexPaths для вставки как

▿ 2 elements
  ▿ 0 : 2 elements
    - 0 : 0
    - 1 : 3
  ▿ 1 : 2 elements
    - 0 : 0
    - 1 : 4

Я полагаю, что indexPath для вставки для операции executeBatchUpdates должны быть рассчитаны после того, как удаления были выполнены, поэтому, видя, что удаления - это первые 2 элемента в коллекции collectionView, нужно уменьшить indexPath.item для вставкиIndexPaths на 2, чтобы иметь они вставляются в правильную позицию, т.е. я хочу, чтобы окончательная вставкаIndexPaths была ...

▿ 2 elements
  ▿ 0 : 2 elements
    - 0 : 0
    - 1 : 1
  ▿ 1 : 2 elements
    - 0 : 0
    - 1 : 2

По сути, я думаю, что мне нужно проверить каждый indexPath.item в массиве inserttionIndexPath, посмотреть, сколько из deletetionIndexPath было перед этим inserttionIndexPath, и уменьшить значение inserttionIndexPath.item на это число.

Как я могу использовать .map для этих insertIndexPaths, чтобы получить правильный результат?

1 Ответ

0 голосов
/ 03 мая 2018

Я смог сделать с

            let adjustedPageDestinationIndexPaths = pageDestinationIndexPaths.map { ( indexPath ) -> IndexPath in
                return IndexPath(item: indexPath.item - pageSourceIndexPaths.filter { $0.item < indexPath.item }.count , section: 0)
            }

, который дает правильные скорректированные indexPaths для приведенного ниже примера, перемещая только 2 элемента из позиций 0 и 1 в позиции 3 и 4, но теперь понял, что чем больше количество элементов, перемещенных за один раз в collectionView, тем больше количество элементов Мне нужно отслеживать, чтобы рассчитать исходные настройки indexPath и назначения indexPath для каждого цикла. Вернуться к чертежной доске.

...