DidSelectItem удаляет неправильные ячейки, когда я использую его в представлении коллекции - PullRequest
1 голос
/ 08 марта 2020

У меня есть панель поиска, настроенная для фильтрации моих ячеек. У меня есть второй массив, который содержит отфильтрованные данные для отображения в collectionView

Я закодировал его так, чтобы при выборе ячейки он занимал у вас к другому контроллеру представления, который отображает более подробную информацию о пользователе. Когда вы нажимаете его, на новом контроллере появляется кнопка редактирования. Он отображает контроллер предупреждений с кнопкой удаления

Когда я выбираю ячейку без использования панели поиска и go для второго контроллера представления с данными пользователя и использования функции удаления, он работает нормально

Но когда я использую панель поиска, и отфильтрованные ячейки отображаются, и я пытаюсь удалить тот, который я выбрал на по какой-то причине он удаляет любую ячейку в главном массиве в том же indexPath, но ничего не делает с ячейкой, которую я хочу удалить

override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {

    let contactDetailsVC = ContactDetailsVC()
    contactDetailsVC.delegate = self


    if isFiltering == true {

        contactDetailsVC.navigationItem.title = filteredUsers[indexPath.item].name
        contactDetailsVC.nameLabel.text = filteredUsers[indexPath.item].name
        contactDetailsVC.emailLabel.text = filteredUsers[indexPath.item].email


    } else {

        contactDetailsVC.navigationItem.title = user[indexPath.item].name
        contactDetailsVC.nameLabel.text = user[indexPath.item].name
        contactDetailsVC.emailLabel.text = user[indexPath.item].email

    }

    navigationController?.pushViewController(contactDetailsVC, animated: true)

    path =   indexPath.row

}

func deleteCell() {

    print(" delete function called")

    user.remove(at: path)
    collectionView.reloadData()

    navigationController?.popViewController(animated: true)

}

1 Ответ

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

Вы должны удалить в зависимости от isFiltering, как в didSelect. Более эффективно удалить элемент, а не перезагружать представление всей коллекции

func deleteCell() {

    print(" delete function called")
    if isFiltering {
       filteredUsers.remove(at: path)
    } else {
       user.remove(at: path)
    }
    collectionView.deleteItems(at: [path])

    navigationController?.popViewController(animated: true)

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