我正在尝试为UITableView
实现流畅的滚动体验,因此我需要使用UITableViewDataSourcePrefetching
,但是有一个问题:API不会发送总数为数据的数据。那么在这种情况下可以走走吗?
更新:
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return data.count
}
func loadNextBatch() {
// load next page then append to data
self.data.append(contentsOf: requests)
}
答案 0 :(得分:-1)
您可以使用UITableViewDataSourcePrefetching的prefetchRowsAtIndexPaths方法
extension TimelineViewController: UITableViewDataSourcePrefetching {
func tableView(_ tableView: UITableView, prefetchRowsAt indexPaths: [IndexPath]) {
DispatchQueue.global(qos: .background).async {
for indexPath in indexPaths {
if indexPath.row < self.timelineItems.count {
if timelineItems[indexPath.row].imageDownloadStatus == .none {
timelineItems[indexPath.row].imageDownloadStatus = .downloading
ImageService.shared.retrieveImage(for: timelineItems[indexPath.row].imageUrl) { [weak self] (image) in
timelineItems[indexPath.row].imageDownloadStatus = .downloaded
}
}
}
}
}
}
}