gpt4 book ai didi

ios - 如何在 swift 2 中从 tableView 中清除已删除的 TableView 单元格

转载 作者:行者123 更新时间:2023-11-30 13:50:45 25 4
gpt4 key购买 nike

我正在从 tableView 中删除单元格,如下所示:

enter image description here

然后,如果我去从列表中删除“牛奶”,这就是tableView数据重新加载后的结果。

enter image description here

当“牛奶”应该从列表中删除时。数据源中的item已经被删除,然后在tableView上调用reload方法:

items.removeAtIndex(currentIndexPath!.row)
tableView.reloadData()

我不知道为什么会发生这种情况,或者如何修复它,但我最好的猜测是单元格被放入队列中,然后,当重新加载 tableView 时,它被取出并放入队列中它被删除的索引路径,所以我想我的问题是,如果这是真的,我怎样才能从tableView的队列中删除它?

最佳答案

好吧,据我所知,发生了以下两件事之一:

1. 数组已正确删除“Milk”,但您的 cellForRowAtIndexPath 方法使用的是旧数组,该数组尚未更新以反射(reflect)此更改。

在本例中,当删除“Milk”时,numberOfRowsInSection 方法将返回数组中的项目数 (2)。但 cellForRowAtIndexPath 没有反射(reflect)此更改,因此仍然从旧列表加载数据 - “鸡蛋”,然后“牛奶”,然后“输入新项目” - 但只被调用两次,所以只到达“牛奶”阶段。因此,“输入新项目”被删除。

2.(更有可能)您的 currentIndexPath 变量是错误的,实际上是此列表中最后一项的索引路径,导致从数组中删除错误的项目。我可能会尝试打印 currentIndexPath.row 的值来检查这一点。

当然,这两者都假设“输入新项目”是您的值列表的一部分,因为我看不到可以删除单元格的任何其他可能的方式。顺便说一句,如果是这种情况,那么我肯定会改变这一点 - 如果你将这样的永久细胞放在自己的部分中,你的生活将会轻松 50 倍。那么你就不需要在 cellForRowAtIndexPath 中担心它们

编辑:另外,如果我误解了这一点,并且我的建议并非如此,那么请尝试在每个阶段打印您的数组,以检查它发生了什么以及何时发生。 (即在每个 TableView 函数中,以及在您尝试删除该值之后。)

关于ios - 如何在 swift 2 中从 tableView 中清除已删除的 TableView 单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34318817/

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