繁体   English   中英

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

[英]How do I clear a deleted table view cell from a tableView in swift 2

我正在像这样从tableView删除单元格:

在此处输入图片说明

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

在此处输入图片说明

什么时候应从列表中删除“牛奶”。 该项目已在数据源中删除,然后在tableView上调用reload方法:

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

我不知道为什么会这样,或者如何解决它,但我最好的猜测是将单元格放入队列中,然后,当重新加载tableView时,将其取出并放入索引路径中是从中删除的,所以我想我的问题是,如果这是真的,该如何从tableView的队列中删除它?

好的,据我所知,正在发生以下两种情况之一:

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

在这种情况下,删除“牛奶”后,numberOfRowsInSection方法将返回数组中的项目数(2)。 但是cellForRowAtIndexPath不能反映此更改,因此仍然从旧列表中加载数据-“鸡蛋”,然后是“牛奶”,然后是“输入新项目”,但是只被调用了两次,因此仅到达了“牛奶”阶段。 因此,“输入新项目”被删除。

2. (更有可能)您的currentIndexPath变量是错误的,并且实际上是该列表中最后一项的indexPath,从而导致从数组中删除了错误的项。 我可能会尝试仅打印currentIndexPath.row的值来进行检查。

这两个当然都假定“输入新项”是您的值列表的一部分,因为我看不到任何其他可能的方式可以删除该单元格。 附带说明一下,如果是这种情况,那么我肯定会改变这一点-如果将像这样的永久性细胞放在自己的区域中,您的生活将轻松50倍。 然后,您无需在cellForRowAtIndexPath中担心它们

编辑:此外,如果我误解了这一点,而我的建议不是这样,那么请尝试在每个阶段打印阵列,以检查发生了什么以及何时发生。 (即在每个Table View函数中,以及刚尝试删除该值之后的位置。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM