সংগ্রহ দৃশ্যটি ব্যবহারকারীর কাছে দৃশ্যমান হওয়ার আগে লোড হয়ে গেলে দৃশ্যমান সমস্ত কক্ষের জন্য আমার কিছু পদক্ষেপ নেওয়া দরকার ছিল, আমি ব্যবহার করেছি:
public func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {
if shouldPerformBatch {
self.collectionView.performBatchUpdates(nil) { completed in
self.modifyVisibleCells()
}
}
}
মনোযোগ দিন যে সংগ্রহ ভিউয়ের মাধ্যমে স্ক্রোল করার সময় এটিকে ডাকা হবে, সুতরাং এই ওভারহেডটি রোধ করতে আমি যুক্ত করেছি:
private var souldPerformAction: Bool = true
এবং ক্রিয়া নিজেই:
private func modifyVisibleCells() {
if self.shouldPerformAction {
// perform action
...
...
}
self.shouldPerformAction = false
}
ক্রিয়াকলাপটি এখনও প্রাথমিক অবস্থায় দৃশ্যমান কক্ষগুলির সংখ্যা হিসাবে একাধিকবার সঞ্চালিত হবে। তবে এই সমস্ত কলগুলিতে, আপনার কাছে একই সংখ্যক দৃশ্যমান কক্ষ থাকবে (সেগুলি সমস্ত)। এবং সংগ্রহের দৃশ্যের সাথে ব্যবহারকারী ইন্টারঅ্যাক্ট করা শুরু করার পরে বুলিয়ান পতাকা এটি আবার চলতে বাধা দেবে।