我使用典型的CoreData组合 - NSFetchedResultsController
- UITableViewController
。
当我使用时:
func controllerWillChangeContent(_ controller: NSFetchedResultsController<NSFetchRequestResult>) {
self.tableView.beginUpdates()
}
func controllerDidChangeContent(_ controller: NSFetchedResultsController<NSFetchRequestResult>) {
self.tableView.endUpdates()
}
通过更新数据源中的一个项目(无插入或删除),有时,tableView无缘无故地上下跳动。
如果我有一些单元格,不足以填满桌面视图,它就不会反弹。
如果我有更多的单元格来滚动tableview,它就不会反弹。
但是,如果我有足够的单元格来填充tableview,那么它就会反弹。
如果我删除了beginUpdates()
和endUpdates()
,则没有随机反弹,但是我放弃了begin / endUpdates()的优点。
可能导致什么?以及如何解决它?
答案 0 :(得分:0)
在iOS 11上类似的问题,替换为[tableView performBatchUpdates:nil completion:nil];解决问题..
答案 1 :(得分:-1)
tableView.beginUpdates()
tableView.endUpdates()
tableView.scrollToRow(at: indexPath, at: .top, animated: true)