我设置了一个搜索栏来过滤我的单元格,我还有另一个数组来保存要在collectionView上显示的过滤后的数据
我对它进行了编码,以便当您选择一个单元格时,它会将您带到另一个显示用户详细信息的视图控制器。当您按下它时,新控制器上有一个编辑按钮,它会显示一个带有delete按钮的警报控制器
当我在没有使用搜索栏的情况下选择一个单元格,转到第二个包含用户详细信息的视图控制器并使用删除功能时,它工作得很好
但是,当我使用搜索栏时,过滤出的单元格显示出来,出于某种原因,我尝试删除我选择的单元格时,它会删除同一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)
}
发布于 2020-03-08 05:35:44
您必须像在didSelect
中一样,根据isFiltering
进行删除。而且,删除项目比重新加载整个集合视图更有效
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)
}
https://stackoverflow.com/questions/60582306
复制相似问题