【问题标题】:Table is jumpy when scrolling to bottom of table滚动到表格底部时表格跳动
【发布时间】:2023-04-07 09:20:01
【问题描述】:

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

我在它下面有一个搜索栏和一个表格视图。当我搜索某些东西时,会进行网络调用,并将 10 个项目添加到数组中以填充表。当我滚动到表格底部时,又对另外 10 个项目进行了网络调用,所以现在数组中有 20 个项目......这可以继续,因为它是类似于 Facebook 的新闻提要的无限滚动。

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

我正在使用 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
        }
    }
}

【问题讨论】:

    标签: ios swift uitableview networking uiscrollview


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的回复。我没有重新加载整个表。相反,我使用insertRowsAtIndexPaths。请使用代码查看我上面更新的问题。我可以继续使用您拥有的还是您有其他解决方案?
    • 感谢您的更新 - 您可以尝试使用我提供的代码而不是每次都插入行,但这实际上会比您的解决方案效率低下。每个单元格的高度实际上总是 100,还是会改变。环顾一番后,似乎可以影响跳动。越接近实际高度越好。
    • 高度因内容而异,可能会有很大差异。我也看到了像你一样的答案,你需要非常接近你的估计身高。问题是,如果不使用UITableViewAutomaticDimension,我不知道该怎么做。不知道如何手动计算高度。
    • 您与UITableViewAutomaticDimension 走在正确的轨道上。您是否尝试过使用 100 以外的值?
    • 嗯...不幸的是,我不确定我是否能够提供更多帮助,但是一旦您弄清楚了,我很想知道答案。抱歉,我帮不上什么忙。
    猜你喜欢
    • 1970-01-01
    • 2019-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多