#ios #swift #swift3 #swift4 #swift5.5
Вопрос:
Я новичок в swift, я хочу перезагрузить свой tableview, поэтому я использовал tableviewName.reloadData() После этого представление таблицы перезагружается и прокручивается немного вверх, но я хочу остаться там, где оно есть
Вот код
функция SearchResult(строка: Int, текст поиска: Строка, тег: Int) {
(defaultAnswerQuestionsArray[тег] как! DefaultAnswerObjectClass).defaultAnswerId = строка
(defaultAnswerQuestionsArray[tag] as! DefaultAnswerObjectClass).defaultAnswerDescription = searchText
tableViewCollection.reloadData()
tableViewCollection.alwaysBounceVertical = false
}
Ответ №1:
Вы можете перезагрузить только видимые ячейки, как это:
let indexPaths = tableView.visibleCells.map { tableView.indexPath(for: $0) }.compactMap { $0 }
tableView.reloadRows(at: indexPaths, with: .automatic)
Ответ №2:
Вам нужно установить смещение содержимого в табличном представлении с помощью setContentOffset
после перезагрузки.
func searchResult(row: Int, searchText: String, tag: Int) {
(defaultAnswerQuestionsArray[tag] as! DefaultAnswerObjectClass).defaultAnswerId = row
(defaultAnswerQuestionsArray[tag] as! DefaultAnswerObjectClass).defaultAnswerDescription = searchText
tableViewCollection.reloadData()
tableViewCollection.alwaysBounceVertical = false
/* NEW */
let contentOffset = tableViewCollection.contentOffset
tableViewCollection.layoutIfNeeded()
tableViewCollection.setContentOffset(contentOffset, animated: false)
}