1

我是新来的 swift 我想重新加载我的表格视图,所以我使用了 tableviewName.reloadData() 在此之后表格视图被重新加载并向上滚动了一点,但我想留在原处

这是代码

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
}
4

2 回答 2

1

您可以像这样重新加载可见的单元格:

let indexPaths = tableView.visibleCells.map { tableView.indexPath(for: $0) }.compactMap { $0 }
tableView.reloadRows(at: indexPaths, with: .automatic)
于 2021-07-07T13:44:46.103 回答
1

您需要使用setContentOffsetafter reload 设置 table-view 的内容偏移量。

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)
}
于 2021-07-07T13:45:19.347 回答