滚动到底部时 TableView 加载更多单元格

Posted

技术标签:

【中文标题】滚动到底部时 TableView 加载更多单元格【英文标题】:TableView loading more cell when scroll to bottom 【发布时间】:2017-10-30 16:45:17 【问题描述】:

我创建了一个 tableView,当用户滚动到最后一个单元格时,将加载更多数据。在 willDisplayCell 中,我实现了这段代码,参考了堆栈溢出中的类似问题。但是当我滚动到底部时,它不会加载一次数据,它会创建一个循环并多次调用 loadMore 函数。

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) 
    let lastData = self.data!.count - 1
    if indexPath.row == lastData 
        currentPage += 1
        self.loadData(currentPage)
    


func loadData() 
    self.showLoadingView() 
    apiCALL(callback:  data
      self.jsonDATA.append(contentsOf: data)
      self.tableView.reloadData()
    )

【问题讨论】:

可以添加loadData方法的代码吗? 你有多少个部分? @trungduc 添加。 1 节 请告诉我numberOfRowInSection方法和showLoadingView方法 仅供参考 - 滚动到底部时自动加载更多数据是一种糟糕的用户体验。让用户根据需要选择加载更多。 【参考方案1】:

添加布尔参数以避免无限循环。

var isLoading = false

func loadData() 
    isLoading = true
    self.showLoadingView()
    apiCALL(callback:  data
        self.isLoading = false
        self.jsonDATA.append(contentsOf: data)
        self.tableView.reloadData()
    )



func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) 
    let lastData = self.data!.count - 1
    if !isLoading && indexPath.row == lastData 
        currentPage += 1
        self.loadData()
    

【讨论】:

但是您设置 isLoading = false 是 apiCall 并在 willDisplay 中检查它是否为 false。那么它不会连续调用 loadData() 吗?

以上是关于滚动到底部时 TableView 加载更多单元格的主要内容,如果未能解决你的问题,请参考以下文章

Jquery实现滚动到底部加载更多(最原始)

Tableview拖到底部时导致应用程序崩溃

限制tableView中显示的单元格数量,滚动到最后一个单元格时加载更多单元格

js监听页面的scroll事件,当移到底部时触发事件

仅在滚动到底部时将页脚固定到底部

一次加载 10 个单元格行 - 快速