Swift 4 Добавить и удалить пользовательскую ячейку с индексом: 0 с анимацией - PullRequest
0 голосов
/ 11 января 2019

У меня проблема с перемещением ячеек, когда я добавляю новую ячейку в indexPath в позиции 0. Я хочу добавить пользовательскую ячейку с индексом 0 с анимацией при нажатии на Редактировать Я хочу переместить мои фотографии, она должна начинаться с индекса 1, а когда я нажимаю Сохранить , пользовательская ячейка должна исчезнуть и пакет изображений для отображения из индекса 0 с анимацией.

NewAlbumEmptyCollectionViewCell - пользовательская ячейка

EditPhotoCollectionViewCell - ячейка изображения по умолчанию enter image description here

@objc func saveAction(){
        if rightBarButton.title == "Edit"{
            rightBarButton.title = "Save"
            isEditEnabled = true
            UI.collectionView.reloadData()
        }else{
            rightBarButton.title = "Edit"
            isEditEnabled = false
            UI.collectionView.reloadData()
        }
    }

extension NewAlbumViewController: UICollectionViewDataSource, UICollectionViewDelegate{
    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        if isEditEnabled == true{
            print(photoAssets.count + 1)
            return photoAssets.count
        }else{
            print(photoAssets.count)
            return photoAssets.count
        }
    }

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

        if isEditEnabled == true{
            if indexPath.section == 0 && indexPath.row == 0 {
                let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "emptyCell", for: indexPath) as! NewAlbumEmptyCollectionViewCell
                return cell
            }else{
                let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "EditPhotoCollectionViewCell", for: indexPath) as! EditPhotoCollectionViewCell

                cell.data = photoAssets[indexPath.row]
                return cell
            }
        }else{
            let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "EditPhotoCollectionViewCell", for: indexPath) as! EditPhotoCollectionViewCell
            cell.data = photoAssets[indexPath.row]
            return cell
        }
    }
}

1 Ответ

0 голосов
/ 11 января 2019

Вы пропустили возврат увеличенного значения для photoAssets.count + 1. Сделайте изменения, как показано ниже.

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    if isEditEnabled == true{

        print(photoAssets.count + 1)
        return photoAssets.count + 1
    }else{
        print(photoAssets.count)
        return photoAssets.count
    }
}

Для плавной анимации:

@objc func saveAction(){
    if rightBarButton.title == "Edit"{
        rightBarButton.title = "Save"
        isEditEnabled = true
        UI.collectionView.insertItems(at: [IndexPath(item: 0, section: 0)])
    }else{
        rightBarButton.title = "Edit"
        isEditEnabled = false
        UI.collectionView.deleteItems(at: [IndexPath(item: 0, section: 0)])
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...