Ci-dessous l'appel de fonction générant le thread 1: EXC_BREAKPOINT (code = 1, sous-code = 0x189d35a80).CollectionView générant SIGABRT sur pushViewController
func showChatView(message: ChatMessage) {
DispatchQueue.main.async {
if self.chatViewController == nil {
let mainStoryboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
self.chatViewController = mainStoryboard.instantiateViewController(withIdentifier: "VAChatViewController") as? VAChatViewController
self.chatViewController?.delegate = self;
}
self.chatViewController?.messages += [message]
self.navigationController?.pushViewController(self.chatViewController!, animated: true, completion: {
let buttonMessage = self.chatViewController?.messages.last
let hasButtons = buttonMessage?.hasButtons
if hasButtons! {
let vaButtonModel = ChatMessage(buttons: buttonMessage?.buttons)
self.chatViewController?.addNewMessage(vaButtonModel)
}
})
}
}
Un autre chose- VAChatViewController implémente CollectionView pour afficher les événements de chat entrants, ce qui est une réponse à un message de chaîne « xyz ». Dans les délégués collectionView, j'obtiens le tableau [count]> 0 mais il n'appelle pas le collectionView: cellForItemAt après numberOfItems et se bloque avec SIGABRT suivi d'un crash. Une idée?
Postez le code de vos méthodes 'UICollectionViewDelegate' et' UICollectionViewDataSource'. – Glenn
Seule la source de données est implémentée! numberOfItemsInSection et cellForItemAt: func CollectionView (_ CollectionView: UICollectionView, section numberOfItemsInSection: Int) -> Int { retour messages.count } laisser un message = self.messages [indexPath.item] commutateur message.messageType { cas .chatContent: let cell = collectionView.dequeueReusableCell (avecReuseIdentifier: "ChatCollectionCell", pour: indexPath) as! ChatCollectionViewCell cell.setupWithMessage (message) return cell – Tarun