Обрабатывать метод делегата moveItem (at: to :) при использовании UICollectionViewDiffableDataSource - PullRequest
0 голосов
/ 10 марта 2020

Мне нужно использовать moveItem(at:to:) метод делегата для перемещения ячеек представления моей коллекции. Когда я реализую методы делегирования источника данных, он работает нормально, но мне нужно установить мой источник данных как UICollectionViewDiffableDataSource, и таким образом moveItem(at:to:) не вызывал. Любое решение для обработки,

Таким образом, это работает при использовании делегаций:


override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
       return 10
}

override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! CustomCell
        cell.textLabel.text = "Some value"
        return cell
}

override func collectionView(_ collectionView: UICollectionView, canMoveItemAt indexPath: IndexPath) -> Bool {
        true
}

override func collectionView(_ collectionView: UICollectionView, moveItemAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) {
        print("OK")
}

установка источника данных таким способом не работает


func setupDataSource() {
        dataSource = UICollectionViewDiffableDataSource<Section, Person>(collectionView: collectionView, cellProvider: {
            (collectionView: UICollectionView, indexPath: IndexPath, person: Person) -> UICollectionViewCell? in
            let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! CustomCell
            cell.textLabel.text = "Some text"
            return cell
        })
    }

1 Ответ

1 голос
/ 10 марта 2020

Для пользовательского поведения создайте подкласс UICollectionViewDiffableDataSource и переопределите там методы.

...