Ich bin dynamisch Daten in die UICollectionView hinzufügen. Immer wenn ich neue Daten habe, löscht es alle vorhandenen Daten und lädt einen neuen Satz. Hier ist der Code,Swift - UICollectionView removeAll() löscht vorübergehend die Zellen
self.conversation.removeAll()
self.collectionView.reloadData()
self.conversation.insert(messageWrapper(description: "Some text", origin: "user"), at: 0)
self.collectionView.reloadData()
-Code in ItemAtIndexPath
func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {
let textViewCell = cell as! TextCollectionViewCell
let description = conversation[indexPath.row].description
let origin = conversation[indexPath.row].origin
textViewCell.textView.text = description
textViewCell.textView.textAlignment = origin == "arvis" ? NSTextAlignment.left : NSTextAlignment.right
}
Problem Es alle vorhandenen Daten entfernt und während neue Daten geladen werden, überlappt mit dem vorhergehenden Daten dh, sagen wir mal, wenn ich Hello
und während I am good
hinzugefügt wird, zeigt es Hello
und "Ich bin gut" darüber.
Warum dies geschieht?
UPDATE 1:
cellForItemAt
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let textViewCell = collectionView.dequeueReusableCell(withReuseIdentifier: "textViewCell", for: indexPath) as! TextCollectionViewCell
let description = conversation[indexPath.row].description
let origin = conversation[indexPath.row].origin
textViewCell.awakeFromNib()
textViewCell.textView.text = description
textViewCell.textView.textAlignment = origin == "arvis" ? NSTextAlignment.left : NSTextAlignment.right
return textViewCell
}
TextCollectionViewCell
Identifier Klasse für die Zelle
class TextCollectionViewCell: UICollectionViewCell {
var textView: UITextView!
override func awakeFromNib() {
textView = UITextView(frame: contentView.frame)
textView.textColor = UIColor.white
textView.font = UIFont.systemFont(ofSize: 18)
textView.layer.backgroundColor = UIColor.clear.cgColor
textView.contentMode = .scaleAspectFill
textView.clipsToBounds = true
contentView.addSubview(textView)
}
}
Ja, richtig! Ich möchte alle vorhandenen Daten löschen, was gut funktioniert! Das Problem ist jedoch, dass es beim Laden neuer Daten erneut angezeigt wird. – moustacheman
Könnten Sie bitte den Code für cellForItemAtIndexPath –
@aravindtrue posten, anstatt 'textViewCell.textView' in' willDisplaycell' zu aktualisieren, versuchen Sie 'textViewCell.textView' von cellForItemAtIndexPath zu aktualisieren und überprüfen Sie –