【发布时间】:2023-04-07 09:20:01
【问题描述】:
这个问题与我的另一个问题有关,我在这里使用了类似的解释:
我在它下面有一个搜索栏和一个表格视图。当我搜索某些东西时,会进行网络调用,并将 10 个项目添加到数组中以填充表。当我滚动到表格底部时,又对另外 10 个项目进行了网络调用,所以现在数组中有 20 个项目......这可以继续,因为它是类似于 Facebook 的新闻提要的无限滚动。
问题是,当我到达表格底部并进行新的网络调用以获取更多数据时,表格会跳跃/抖动。它只发生在这里,而不是当我上下滚动时。
我正在使用 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
}
}
}
【问题讨论】:
标签: ios swift uitableview networking uiscrollview