Как использовать UITableViewDataSourcePrefetching, если общее количество строк неизвестно? - PullRequest
0 голосов
/ 23 июня 2019

Я пытаюсь добиться плавной прокрутки для 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)
    }

1 Ответ

0 голосов
/ 23 июня 2019

Вы можете использовать prefetchRowsAtIndexPaths метод UITableViewDataSourcePrefetching

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
                        }
                    }
                }
            }
        }
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...