这个问题与我的另一个问题有关,我在这里使用了类似的解释:
我有一个搜索栏和一个表格视图。当我搜索网络调用的内容并将10个项目添加到数组以填充表格时。当我滚动到桌子的底部时,另外10个项目的另一个网络呼叫,所以现在阵列中有20个项目...这可以继续,因为它是一个类似于Facebook的无限滚动&#39新闻提要。
问题在于,当我到达表格的底部并进行新的网络调用以获取更多数据时,表格跳转/加速。它只发生在这里,而不是在我上下滚动的时候。
我正在使用tableView.estimatedRowHeight = 100
和tableView.rowHeight = UITableViewAutomaticDimension
这可能是基于Stack Overflow上的众多答案的问题,但我不确定如何做到这一点。
有什么想法吗?
更新问题1
我没有重新加载整个表格。相反,我使用了insertRowsAtIndexPaths
,如下所示:
func refreshItems(index: Int) {
// Make to network call to Google Books
GoogleBooksClient.getBooksFromGoogleBooks(self.searchBar.text!, startIndex: index) { (books, error) -> Void in
guard let books = books else {
return
}
self.footerView.hidden = false
self.booksArrayFromNetworkCall += books
dispatch_async(dispatch_get_main_queue()) {
self.tableView.beginUpdates()
var indexPathsToInsert = [NSIndexPath]()
for i in self.currentIndexCount..<self.currentIndexCount + 10 {
indexPathsToInsert.append(NSIndexPath(forRow: i, inSection: 0))
}
self.tableView.insertRowsAtIndexPaths(indexPathsToInsert, withRowAnimation: .None)
self.tableView.endUpdates()
self.isLoading = false
self.currentIndexCount = self.booksArrayFromNetworkCall.count
}
}
}
答案 0 :(得分:0)
如果要重新加载整个表格,可能是跳跃的原因。您可以尝试以动画方式重新加载其中的一部分。我不确定,但这可能有所帮助。
这是我用于重新加载带动画的部分的代码:
self.tableView.reloadSections(NSIndexSet(index: 0), withRowAnimation: .Automatic)