2017-09-26 65 views
0

下面的函数调用生成线程1:EXC_BREAKPOINT(code = 1,subcode = 0x189d35a80)。CollectionView在pushViewController上生成SIGABRT

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) 
       } 
      }) 
     } 
    } 

还有一东西─VAChatViewController实现的CollectionView显示聊天呼入事件,这是一个字符串信息“XYZ”的响应。在collectionView委托中,我得到数组[count]> 0,但它没有在numberOfItems之后调用collectionView:cellForItemAt,并在SIGABRT之后崩溃。任何想法?

+0

发布您的'UICollectionViewDelegate'和'UICollectionViewDataSource'方法的代码。 – Glenn

+0

只有数据源被执行! numberOfItemsInSection和cellForItemAt:函数的CollectionView(_的CollectionView:UICollectionView,numberOfItemsInSection部的:int) - >内部{ 返回messages.count }让消息= self.messages [indexPath.item] 开关message.messageType { 情况.chatContent: let cell = collectionView.dequeueReusableCell(withReuseIdentifier:“ChatCollectionCell”,for:indexPath)as! ChatCollectionViewCell cell.setupWithMessage(message) return cell – Tarun

回答

0

自私的我! :P 我能够解决这个问题,因为这被认为是一个愚蠢的错误。我打电话showChatView:多次,因为我做了一个ChatViewController对象,但我忘了把pushViewController放在任何检查下。而这就是崩溃的原因。谢谢