Je suis en mesure de faire défiler vers le bas de la collection, mais parfois il déclenche une exception de chemin non valide. J'ai essayé de vérifier numberOfSections et numberOfItemsInSection mais l'erreur apparaît parfois et mon application tombe en panne. J'ai également essayé d'utiliser la méthode setContentOffset pour faire défiler mais l'erreur apparaît parfois.Exception de chemin invalide
C'est le code que j'utilise pour faire défiler vers le bas du CollectionView:
guard let uid = FIRAuth.auth()?.currentUser?.uid, let toId = user?.id else {
return
}
let userMessagesRef = FIRDatabase.database().reference().child("user-messages").child(uid).child(toId)
userMessagesRef.observe(.childAdded, with: { (snapshot) in
guard let messageId = snapshot.key as? String else {
return
}
let messagesRef = FIRDatabase.database().reference().child("messages").child(messageId)
messagesRef.observeSingleEvent(of: .value, with: { (snapshot) in
guard let dictionary = snapshot.value as? [String: AnyObject] else {
return
}
self.messages.append(Message(dictionary: dictionary))
DispatchQueue.main.async(execute: {
self.collectionView?.reloadData()
//scroll to the last index
if self.messages.count > 0 {
if let indexPath = IndexPath(item: self.messages.count - 1, section: 0) as? IndexPath? {
self.collectionView?.scrollToItem(at: indexPath!, at: .bottom, animated: false)
}
}
})
}, withCancel: nil)
}, withCancel: nil)
}
J'ai aussi essayé ceci:
DispatchQueue.main.async(execute: {
self.collectionView?.reloadData()
//scroll to the last index
if let _ = self.collectionView?.dataSource?.collectionView(self.collectionView!, cellForItemAt: IndexPath(row: 0, section: 0)) {
if let indexPath = IndexPath(item: self.messages.count - 1, section: 0) as? IndexPath? {
self.collectionView?.scrollToItem(at: indexPath!, at: .bottom, animated: false)
}
}
})
double possible de [Faire défiler vers le bas de CollectionView sans animation et sans chemin non valide exception] (https://stackoverflow.com/questions/46700716/scroll-to-bottom-of-collectionview-without-animation-and-without-invalid-path-ex) – jvrmed
Désolé cette question n'a pas été répondue et donc j'avais pour poster à nouveau! Je supprime cette question. –
si vous pouvez partager plus de détails sur l'erreur de message d'erreur (impressions, journaux, etc.), il sera plus facile de vous guider quelque part – jvrmed