Я был немного смущен некоторыми ответами, которые я нашел на этот вопрос из-за неполных объяснений.Из того, что я собрал, есть два пути для выполнения того, что запрашивал OP, и они следующие:
1) Если анимация не требуется, я бы предложил сбросить положение прокрутки перед загрузкой данных, используя один изметоды смещения.Причина, по которой вы должны запустить смещение перед reloadData, заключается в том, что reloadData работает асинхронно.Если вы запустите смещение после перезагрузки, ваша позиция прокрутки, вероятно, будет на несколько строк ниже от верхней части.
tableView.setContentOffset(.zero, animated: false)
tableView.reloadData()
2) Если требуется анимация, поместите прокрутку в верхнюю строку после запуска reloadData, используяscrollToRow.Причина, по которой метод scrollToRow работает, заключается в том, что он помещает вас в верхнюю часть таблицы, в отличие от метода смещения, который позиционирует вас относительно уже загруженных данных.
tableView.reloadData()
tableView.scrollToRow(at: IndexPath(row: 0, section: 0), at: .top, animated: true)