滚动到表格

时间:2016-02-17 23:15:59

标签: ios swift uitableview networking uiscrollview

这个问题与我的另一个问题有关,我在这里使用了类似的解释:

我有一个搜索栏和一个表格视图。当我搜索网络调用的内容并将10个项目添加到数组以填充表格时。当我滚动到桌子的底部时,另外10个项目的另一个网络呼叫,所以现在阵列中有20个项目...这可以继续,因为它是一个类似于Facebook的无限滚动&#39新闻提要。

问题在于,当我到达表格的底部并进行新的网络调用以获取更多数据时,表格跳转/加速。它只发生在这里,而不是在我上下滚动的时候。

我正在使用tableView.estimatedRowHeight = 100tableView.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
        }
    }
}

1 个答案:

答案 0 :(得分:0)

如果要重新加载整个表格,可能是跳跃的原因。您可以尝试以动画方式重新加载其中的一部分。我不确定,但这可能有所帮助。

这是我用于重新加载带动画的部分的代码:

self.tableView.reloadSections(NSIndexSet(index: 0), withRowAnimation: .Automatic)