У меня есть UICollectionView с макетом потока, около 140 ячеек с простым UITextView.Когда ячейка перерабатывается, я помещаю textView в кеш и снова использую его в новой ячейке.Все работает хорошо, пока я не достигну дна и не прокручиваю назад.В этот момент я вижу, что CollectionView реализует ячейку с номером 85, но затем перед отображением ячейки 85 она снова перерабатывает ее для ячейки 87, поэтому я теряю содержимое ячейки, которую я только что подготовил.
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "FormCell", for: indexPath) as! FormCollectionViewCell
let textView = Cache.vendTextView()
textView.text = "\(indexPath.row)"
cell.addSubview(textView)
cell.textView = textView
return cell
}
И на UIcollectionViewCelC
override func prepareForReuse() {
super.prepareForRuse()
self.textView.removeFromSuperView()
Cache.returnView(self.textView)
}
Я бы подумал, что после вызова cellForItemAtIndexPath () он будет удален из пула ячеек многократного использования, но кажется, что этонемедленно перерабатывается в соседнюю камеру.возможно ошибка или я, возможно, неправильно понимаю нормальное поведение UICollectionView?