重新加载tableview部分没有滚动或动画

我正在使用此代码重新加载tableView部分 –

self.tableView.beginUpdates() self.tableView.reloadSections(NSIndexSet(index: 1), withRowAnimation: UITableViewRowAnimation.None) self.tableView.endUpdates() 

行替换仍然是动画的,表视图滚动到顶部。

如何确保不会将动画应用于重新加载部分+阻止表格视图滚动。

谢谢

尝试这个:

  UIView.setAnimationsEnabled(false) self.tableView.beginUpdates() self.tableView.reloadSections(NSIndexSet(index: 1) as IndexSet, with: UITableViewRowAnimation.none) self.tableView.endUpdates() 

要防止滚动和动画,请执行以下操作:

  UIView.performWithoutAnimation { let loc = tableView.contentOffset self.tableView.reloadRows(at: [indexPath], with: .none) tableView.contentOffset = loc } 

斯威夫特4

实际上,在滚动或展开/折叠单元格期间防止疯狂动画的最佳方法是:

 UIView.performWithoutAnimation { self.tableView.reloadRows(at: [indexPath], with: .none) } 

这两个答案都不适合我。 这是我找到的解决方案,希望它对某人有用

斯威夫特4:

 let lastScrollOffset = tableView.contentOffset tableView.beginUpdates() tableView.reloadSections(IndexSet(integer: 1), with: .none) tableView.endUpdates() tableView.layer.removeAllAnimations() tableView.setContentOffset(lastScrollOffset, animated: false) 

在viewDidLoad中为此方法添加一行

 self.tableView.remembersLastFocusedIndexPath = true 

将此代码添加到更新后要刷新的位置

 UIView.setAnimationsEnabled(false) self.tableView.beginUpdates() self.tableView.reloadSections(NSIndexSet(index: 1) as IndexSet, with: UITableViewRowAnimation.none) self.tableView.endUpdates()