2017-09-26 3 views
0

아래 함수 호출 생성 스레드 1 : EXC_BREAKPOINT (코드 = 1, 서브 코드 = 0x189d35a80).pushViewController에서 SIGABRT를 생성하는 CollectionView

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 문자열 메시지 "XYZ"에 대한 응답 들어오는 채팅 이벤트를 표시 할 collectionView을 구현합니다. collectionView 대리자에서 배열 [count]> 0을 얻었지만 numberOfItems 다음에 collectionView : cellForItemAt를 호출하지 않고 SIGABRT와 충돌 한 후 위의 충돌이 발생했습니다. 어떤 생각?

+0

'UICollectionViewDelegate' 및'UICollectionViewDataSource' 메소드의 코드를 게시하십시오. – Glenn

+0

데이터 소스 만 구현됩니다! numberOfItemsInSection 및 cellForItemAt (: UICollectionView, numberOfItemsInSection 부 : _ collectionView INT) collectionView FUNC -> {지능 복귀 messages.count } 있도록 메시지 self.messages = [indexPath.item] 스위치 message.messageType { 경우 .chatContent : cell = collectionView.dequeueReusableCell (withReuseIdentifier : "ChatCollectionCell", 즉 : indexPath)을! ChatCollectionViewCell cell.setupWithMessage (message) 반환 셀 – Tarun

답변

0

이기적인 저! : P 어리석은 실수로 발견 된 문제를 해결할 수있었습니다. showChatView : ChatViewController의 단일 객체를 만든 이유에 대해 여러 번 호출하고 있지만 모든 검사에서 pushViewController를 놓는 것을 잊어 버렸습니다. 그리고, 그게 충돌의 원인이야. 감사합니다.

관련 문제