gpt4 book ai didi

ios - 从 tableView 中删除多个单元格而不会发生冲突

转载 作者:行者123 更新时间:2023-12-01 15:42:45 54 4
gpt4 key购买 nike

我有一个 tableView用户可以点击button里面cell删除它。那button与此有关delegate-function :

extension WishlistViewController: DeleteWishDelegate {
func deleteWish(_ idx: IndexPath){
// remove the wish from the user's currently selected wishlist
wishList.wishes.remove(at: idx.row)
// set the updated data as the data for the table view
theTableView.wishData.remove(at: idx.row)
self.theTableView.tableView.deleteRows(at: [idx], with: .right)
print("deleted")
}
}
这是我如何称呼 callback (在 animation 完成后):
@objc func checkButtonTapped(){ 
self.successAnimation.isHidden = false
self.successAnimation.play { (completion) in
if completion {
self.deleteWishCallback?()
}
}
}
还有这个 callbackcellForRowAt 中处理并通过 indexPath :
cell.deleteWishCallback = {
self.deleteWishDelegate?.deleteWish(indexPath)
}
当我得到一个 IndexOutOfBounds-Error 时,它工作正常,直到用户一个接一个地单击多个按钮.我在想的是存储所有传入的 indexes在某种列表中并一个接一个地删除它们,但每个 index另一个 cell 立即更改下面的本身被删除。完成这项工作的最佳方法是什么?

最佳答案

你如何发送 indexPath 在委托(delegate)中删除,你能显示代码吗?
您可能在已删除的单元格上保留了循环,并且索引无效。
编辑:解决方案
您必须在闭包 self.deleteWishCallback?(cell) 中传递单元格,然后像这样获取实际的索引路径

cell.deleteWishCallback = { deletedCell in
let indexPath = tableView.indexPath(for: deletedCell)
wishList.wishes.remove(at: indexPath.row)
tableView.deleteRows(at: [indexPath], with: .right)
self.deleteWishDelegate?.deleteWish(indexPath)
}

关于ios - 从 tableView 中删除多个单元格而不会发生冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63053719/

54 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com