tableView.scrollToRow()的替代方案

时间:2017-07-13 15:56:17

标签: ios uitableview swift3

问题

我需要使用位于tableview顶部的特定单元格重新加载UITableView。例如,将tableView中的第3个单元格显示在tableView的顶部,而不是第1个。

这样做的问题来自于无法使用

self.tableView.scrollToRow(at: indexPath, at: .top, animated: false)

函数,因为我有一个自定义标题,当用户滚动时它会展开和折叠。这意味着当我调用scrollToRow()函数时,我的标题会崩溃,搞砸了。

问题

有没有办法让tableView打开/重新加载第三个单元位于tableView的顶部,而不使用“滚动”功能?

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以按照以下步骤来满足您的要求:

  1. 识别其中一个可见单元格的 NSIndexPath
  2. 获取 rectForRowAtIndexPath
  3. 获取表格的当前 contentOffset
  4. 或者,您可以使用 scrollRectToVisible
  5. 这是我们使用 b d e Utah 1.624345 -0.611756 -0.528172 Ohio -1.072969 0.865408 -2.301539 Texas 1.744812 -0.761207 0.319039 Oregon -0.249370 1.462108 -2.060141 [array([[ 1.62434536, -0.61175641, -0.52817175], [-1.07296862, 0.86540763, -2.3015387 ]]), array([[ 1.74481176, -0.7612069 , 0.3190391 ], [-0.24937038, 1.46210794, -2.06014071]])] b d e Utah 3.624345 1.388244 1.471828 Ohio 0.927031 2.865408 -0.301539 Texas 3.744812 1.238793 2.319039 Oregon 1.750630 3.462108 -0.060141

    的方式
    contentOffset

    mainTableView.setContentOffset(rectForRowAtIndexPath.point, animated: true)

    scrollRectToVisible