如何从swift 2中的tableView清除已删除的表视图单元格

时间:2015-12-16 17:49:41

标签: ios swift uitableview

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

enter image description here

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

enter image description here

"牛奶"应该已从列表中删除。该项已在数据源中删除,然后在tableView:

上调用reload方法
items.removeAtIndex(currentIndexPath!.row)
tableView.reloadData()

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

1 个答案:

答案 0 :(得分:0)

好的,从我所看到的情况来看,发生了两件事之一:

1。数组已删除" Milk"正确,但您的cellForRowAtIndexPath方法使用的是旧数组,该数组尚未更新以反映此更改。

在这种情况下," Milk"删除后,numberOfRowsInSection方法返回数组中的项目数(2)。但是cellForRowAtIndexPath并没有反映出这种变化,所以仍然会加载旧列表中的数据 - "鸡蛋"然后"牛奶"然后"输入新项目" 34; - 但只被叫两次,所以只能到达"牛奶"阶段。因此"输入一个新项目"被删除了。

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

这两个当然都假设"输入一个新项目"是您的值列表的一部分,因为我看不到任何其他可能的方式可以删除单元格。作为旁注,如果是这种情况,那么我肯定会改变这一点 - 如果你把这样的永久性细胞放在他们自己的部分内,你的生命将会轻松50倍。那么你不需要在cellForRowAtIndexPath

中担心它们

编辑另外,如果我误解了这个,而我的建议不是这样,那么请尝试在每个阶段打印阵列,检查发生了什么它和什么时候。 (即在每个表视图功能中,并且在您尝试删除该值之后。)