Я работаю над горизонтальным 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, который отображает следующую ячейку.
Я хочу предварительно загрузить следующую ячейку без уменьшения размера ячейки. Есть ли решения?