【问题标题】:Reload tableview without scroll重新加载tableview而不滚动
【发布时间】:2021-09-18 00:49:45
【问题描述】:

我是 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
}

【问题讨论】:

    标签: ios swift swift3 swift4 swift5.5


    【解决方案1】:

    重新加载后需要使用setContentOffset设置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)
    }
    

    【讨论】:

      【解决方案2】:

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

      let indexPaths = tableView.visibleCells.map { tableView.indexPath(for: $0) }.compactMap { $0 }
      tableView.reloadRows(at: indexPaths, with: .automatic)
      

      【讨论】:

        猜你喜欢
        • 2020-05-25
        • 1970-01-01
        • 1970-01-01
        • 2016-12-24
        • 1970-01-01
        • 1970-01-01
        • 2014-11-18
        • 2019-12-28
        • 1970-01-01
        相关资源
        最近更新 更多