我使用典型的组合CoreData-NSFetchedResultsController-UITableViewController
当我使用时:

func controllerWillChangeContent(_ controller: NSFetchedResultsController<NSFetchRequestResult>) {
  self.tableView.beginUpdates()
}
func controllerDidChangeContent(_ controller: NSFetchedResultsController<NSFetchRequestResult>) {
  self.tableView.endUpdates()
}

通过更新数据源中的一项(无插入或删除),有时,tableView会无缘无故地上下跳动。

如果我有几个单元格,不足以填满表格视图,它不会反弹。

如果我还有更多的单元格可以滚动表格视图,则它不会反弹。

但是,如果我只有足够的单元格来填充表格视图,则该位置会反弹。

如果删除beginUpdates()endUpdates(),则不会出现随机跳动,但是我失去了begin / endUpdates()的优势。

可以看到hereover here预览

是什么原因造成的?以及如何解决?

最佳答案

在iOS 11类似问题上,替换为[tableView performBatchUpdates:nilcomplete:nil];解决问题

关于ios - 带有beginUpdates()的UITableView反弹,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48005287/

10-10 19:12