Перезагрузите просмотр таблицы без прокрутки

#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)
}