Swift 5 удалить раздел из CollectionView - PullRequest
0 голосов
/ 08 июня 2019

Я пытаюсь сделать так, чтобы пользователь мог удалить сообщение из чата, я использую MessageKit, который основан на разделе collectionView lib.Я пытаюсь удалить раздел долгим нажатием.Что я делаю не так?

Я получаю эту ошибку

Завершение приложения из-за необработанного исключения «NSInternalInconsistencyException», причина: «попытка удалить элемент 0 из раздела 1, нодо обновления осталось только 1 секция '

долгое нажатие

@objc func longPressed(sender: UILongPressGestureRecognizer) {
    if sender.state == UIGestureRecognizer.State.began {
        let touchPoint = sender.location(in: self.messagesCollectionView)
        if let indexPath = messagesCollectionView.indexPathForItem(at: touchPoint){
            //indexPath.row = 0
            //indexPath.section = 1
            //row always is 0, and section +1 for every next message
            messageList.remove(at: indexPath.section)
            collectionView.performBatchUpdates({
                collectionView.deleteItems(at: [indexPath])
                collectionView.reloadData()
            }, completion: nil)
        }
    }
}


func numberOfSections(in messagesCollectionView: MessagesCollectionView) -> Int {
    return messageList.count
}

func messageForItem(at indexPath: IndexPath, in messagesCollectionView: MessagesCollectionView) -> MessageType {
    return messageList[indexPath.section]
}

1 Ответ

0 голосов
/ 08 июня 2019

Обновите ваш код следующим образом:

if let indexPath = messagesCollectionView.indexPathForItem(at: touchPoint){
        //indexPath.row = 0
        //indexPath.section = 1
        //row always is 0, and section +1 for every next message
        messageList.remove(at: indexPath.section)
        collectionView.reloadData()
    }

Просто перезагрузите представление коллекции после удаления сообщения из массива.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...