Saya memerlukan beberapa tindakan yang harus dilakukan pada semua sel yang terlihat saat tampilan koleksi dimuat sebelum terlihat oleh pengguna, saya menggunakan:
public func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {
if shouldPerformBatch {
self.collectionView.performBatchUpdates(nil) { completed in
self.modifyVisibleCells()
}
}
}
Perhatikan bahwa ini akan dipanggil saat menggulir melalui tampilan koleksi, jadi untuk mencegah overhead ini, saya menambahkan:
private var souldPerformAction: Bool = true
dan dalam aksinya itu sendiri:
private func modifyVisibleCells() {
if self.shouldPerformAction {
// perform action
...
...
}
self.shouldPerformAction = false
}
Tindakan tersebut masih akan dilakukan beberapa kali, sebagai jumlah sel yang terlihat pada keadaan awal. tetapi pada semua panggilan itu, Anda akan memiliki jumlah sel terlihat yang sama (semuanya). Dan bendera boolean akan mencegahnya berjalan kembali setelah pengguna mulai berinteraksi dengan tampilan koleksi.