Я также искал эту проблему, и до сих пор я не нашел не жестко закодированное решение, но, по крайней мере, нашел следующее решение, которое отлично подходит для моих нужд (оно почти такое же, как у вас). ):
extension UITableView {
func reloadDataWithoutAnimation(scrollingAt desiredIndexPath: IndexPath, at desiredScrollPosition: UITableView.ScrollPosition) {
UIView.performWithoutAnimation {
reloadData()
scrollToRow(at: desiredIndexPath, at: desiredScrollPosition, animated: false)
}
}
}
Использование:
let indexPath = IndexPath(row: desiredRow, section: desiredSection)
tableView.reloadDataWithoutAnimation(scrollingAt: indexPath, at: desiredScrollPosition)
Надеюсь, это поможет.