【问题标题】:TableView loading more cell when scroll to bottom滚动到底部时 TableView 加载更多单元格
【发布时间】: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方法
  • 仅供参考 - 滚动到底部时自动加载更多数据是一种糟糕的用户体验。让用户根据需要选择加载更多。

标签: ios uitableview


【解决方案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() 吗?
猜你喜欢
  • 2016-04-07
  • 1970-01-01
  • 2021-11-17
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多