2016-06-22 8 views
0

Ich versuche, die ‚gesendet‘ -Status mit JSQMessagesViewControllerin JSQMessagesViewController

Ich habe eine Message Queue und einen Chat-View-Controller zu implementieren. Wenn die Nachrichtenwarteschlange eine bestimmte Nachricht erfolgreich sendet, möchte ich eine bestimmte Zelle im ChatViewController neu laden können.

Wie mache ich diese Art der Kommunikation zwischen der Nachrichtenwarteschlange und dem ChatVC? Hier

ist, was ich in der Lage gewesen zu tun -

Dies ist mein Message Queue -

var unsentMessages = [String]() { 
    didSet { 
     // Check if a new value is being added or removed 
     // If a new value is added then the oldValue will anve less elements than the original unsentMessages list 
     if oldValue.count < unsentMessages.count { 


      dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), { 

       newValue in 

       let messageID = unsentMessages.last 


       let realm = try! Realm() 


       for i in 1...10 { 

        if channel.subscribed { 

         let message = realm.objectForPrimaryKey(Message.self, key: messageID) 
         channel.trigger("client-message", data: (message?.pusherMessage())!) 
         unsentMessages.popLast() 

         break 

        } else { 

         let time = 2 << UInt(i) 
         sleep(UInt32(time)) 
        } 
       } 

      }) 

jetzt, was ich tun muß, ist den folgenden Code aufrufen - self.collectionView.reloadItemsAtIndexPaths() von irgendwo innerhalb des ChatViewController . Dadurch wird die Nachrichtenzelle automatisch neu geladen und der Status aktualisiert.

Wie kann ich Code innerhalb des ChatViewController aufrufen und Daten (die MessageID) aus der Nachrichtenwarteschlange übergeben.

Antwort

0

Warum rufen Sie nicht einfach reload() auf Ihrem ChatVC, sobald die Nachricht erfolgreich gesendet wurde.

Verwandte Themen