UITableView中的行不会立即删除

问题描述 投票:1回答:1

当用户滑动删除某些单元格(项目)时,我正在使用trailingSwipeActionsConfigurationForRowAt UITableView的委托方法进行处理。

我的[[删除事件]]的UIContextualAction]看起来像这样。我先从Realm数据库中删除项目,然后从表视图中删除行func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? { let deleteAction = UIContextualAction(style: .destructive, title: nil) { _,_,_ in Repository.shared.deleteItem(self.items![indexPath.row]) tableView.deleteRows(at: [indexPath], with: .fade) } ... }

但是由于某些原因,当我删除单元格时,它不会立即删除,并且会返回到滑动之间的位置。然后,当我滚动表格视图时,单元格消失了,就像您在下面的gif中看到的一样:

enter image description here

我可以从数据库中删除某些项目后立即通过重新加载表视图的数据来“修复”此问题,但这不是我想要的,由于动画我想使用deleteRow(at:with:)


我的猜测是,这与从Realm数据库中删除项目有关。

我正在使用delete方法删除项目

func deleteItem(_ item: Item) { do { try realm.write { realm.delete(item) } } catch { print(error) } }

然后作为我的表视图的数据源数组,我正在使用Realm的Results

var items: Results<Item>?


有人知道为什么会这样吗?谢谢。

我正在使用TrailingSwipeActionsConfigurationForRowAt UITableView的委托方法来处理用户滑动以删除某些单元格(项目)的时间。我的UIContextualAction删除事件如下所示。我...

swift uitableview realm uicontextualaction uiswipeactionsconfiguration
1个回答
0
投票
我正好面对您遇到的问题。我也使用Realm,也使用Results<Item>作为tableView数据源。
© www.soinside.com 2019 - 2024. All rights reserved.