【问题标题】:Reload table view but don't move the viewport iOS重新加载表格视图但不移动视口 iOS
【发布时间】:2015-09-29 23:36:49
【问题描述】:

我有一个根据 API 的结果更新的表格视图。表格视图有一个很大的自定义单元格,几乎占据了屏幕的一半。用户可以使用自定义按钮对单元格进行排序。平均而言,表格内将有 10-15 个单元格,我的大问题是当用户单击以将最底部的单元格移动 1 点时,reloadData 将刷新整个表格并将视口移动到顶部,这意味着用户将必须再次滚动到最后,这是糟糕的用户体验。有没有办法刷新表格视图,但在重新加载之前保持位置,或者考虑使用在表格填充后调用的自定义滚动是否有用。我正在用 Swift 编写应用程序,API 使用 Alamofire 处理,自定义单元格有一个单独的 XIB 文件,表格视图在我的视图控制器内。

【问题讨论】:

    标签: ios uitableview


    【解决方案1】:

    保存contentOffset,然后在reloadData之后恢复它

    let contentOffset = tableView.contentOffset
    
    tableView.reloadData()
    
    tableView.contentOffset = contentOffset
    

    【讨论】:

    • 直到今天我才知道 contentOffset 属性,这就是为什么我将其标记为正确答案的原因,因为我真的很喜欢修改 Y 并具体说明值的可能性,尽管@Das 的回答也完全正确,实际上可能更有用,因为它带有一个开箱即用的方便动画。
    • @NerminSehic 请注意,还有一个 setContentOffset 方法也采用动画标志
    【解决方案2】:

    你最好保存 indexPath 然后调用 tableView.reloadData 然后滚动到保存的位置如下

    tableView.scrollToRowAtIndexPath(indexPath, atScrollPosition: .Top, animated: true)
    

    【讨论】:

      猜你喜欢
      • 2012-07-02
      • 1970-01-01
      • 1970-01-01
      • 2018-04-12
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多