Я работаю над горизонтальным UICollectionView с полноэкранными ячейками.
Внутри ячеек есть WKWebview, который загружает URL-адрес следующей ячейки.
При загрузке следующего URL-адреса вставляется новая ячейка.
extension ViewController {
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: WebCell.reuseId, for: indexPath) as? WebCell else { fatalError("Unexpected indexPath") }
cell.configure()
cell.startLoadingURL(urls[indexPath.item])
return cell
}
}
extension ViewController: WebCellDelegate {
func onNextURLLoaded(_ sender: WebCell, nextUrl: URL) {
...
urls.append(nextUrl)
horizontalCollectionView.performBatchUpdates({
horizontalCollectionView.insertItems(at: [IndexPath(item: urls.count-1, section: 0)])
}, completion: nil)
}
}
Что я хочу сделать, так это заранее отобразить следующую ячейку.
Проблема в том, что метод cellForItemAt не вызывается после insertItems(at:).
Но когда я уменьшаю размеры ячеек, чтобы следующая ячейка была видна, вызывается метод cellForItemAt и визуализирует следующую ячейку.
Я хочу предварительно загрузить следующую ячейку, не уменьшая размер ячейки. Есть ли решения?