У меня проблемы с моим tableView после того, как я перезагрузил Data (). Это всегда прокручивается к вершине. Я не знаю, где я все испортил, потому что раньше он работал очень хорошо, поддерживая позицию смещения.
Я использую автоматическое измерение c.
var currentCount: Int {
return news.count
}
tableView.rowHeight = UITableView.automaticDimension
tableView.estimatedRowHeight = 200
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
if !fetchingMore && indexPath.row == currentCount - 1 {
beginBatchFetched()
}
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return tableView.estimatedRowHeight
}
func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
return 200
}
private func beginBatchFetched() {
fetchingMore = true
customGetAllNews(serchKey: qKey, tags: tagsAsParameter, cameFromPullToRefresh: false)
}
private func customGetAllNews(serchKey: String?, tags: [String]? = nil,....) {
Helper.getAllNews(page: self.currentPage, key: serchKey........) { (data) in
self.fetchingMore = false
guard let nws = data?.news else {return}
self.currentPage += 1
self.news.append(contentsOf: nws)
GlobalMainQueue.async {
self.tableView.reloadData()
}
}
Я также попробовал некоторые принятые ответы из других постов, такие как сохранение смещения моего табличного представления непосредственно перед перезагрузкой и после того, как оно установлено, но оно не работает должным образом, потому что мне все еще нужно немного прокрутить, чтобы добраться до точки, в которой я был раньше.
Кроме того, я попробовал метод с heightDictionary: [Int : CGFloat] = [:]
override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
heightDictionary[indexPath.row] = cell.frame.size.height
}
override func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
let height = heightDictionary[indexPath.row]
return height ?? UITableViewAutomaticDimension
}
, но безуспешно, результат было то же самое, прыгает на вершину таблицы.