如何重新加载UITableView的可见(最后)单元格?

时间:2017-03-15 06:38:25

标签: ios uitableview uitableviewautomaticdimension

我正在构建一个聊天应用程序。我使用UTableView构建聊天框。当我加载聊天框屏幕时,我需要将tableview滚动到上一条未读消息的索引路径。我正在使用scrollToRowAtIndexPath方法来执行此操作。在这种情况下,将为indexPath 0中的所有单元调用cellForRowIndexPath。这会严重影响应用程序性能。由于我使用自动维度来表示单元格高度,因此我也无法使用setContentOffset方法。

有没有其他方法可以将tableview滚动到所需的indexPath而不加载中间单元格?

2 个答案:

答案 0 :(得分:0)

self.tblView.reloadData()
// First figure out how many sections there are
   let lastSectionIndex = self.tblView!.numberOfSections - 1

// Then grab the number of rows in the last section
   let lastRowIndex = self.tblView!.numberOfRowsInSection(lastSectionIndex) - 1

// Now just construct the index path
   let pathToLastRow = NSIndexPath(forRow: lastRowIndex, inSection: lastSectionIndex)

// Make the last row visible
   self.tblView?.scrollToRowAtIndexPath(pathToLastRow, atScrollPosition: UITableViewScrollPosition.None, animated: false)

答案 1 :(得分:0)

我可以想到两种方法可以达到预期的行为。

  1. 将scrollToRowAtIndexPath与动画 = false
  2. 一起使用
  3. 使用 setContentOffset 方法计算高度。这将需要实际计算单元格的高度。