2017-10-18 20 views
1

Je travaille sur l'application de chat. Dans mon application charge fonction de message plus tôt mis en œuvre qui n'est pas lisse et précis comme whatsapp.Charger plus tôt avec le défilement lisse

J'utilise UITableview pour l'inscription dans le chat et aller chercher plus de données en utilisant

func scrollViewDidScroll(_ scrollView: UIScrollView) { 

    if scrollView.contentOffset.y >= 0 && scrollView.contentOffset.y <= 50{ 
     print(" scrollViewDidScroll Load Earlier start- \(Utils.stringFromNSDate(Date(), inMillisec: true, useUTC: true)!)") 
     if !self.messageFetcher.isHideLoadMoreDisplay{ 
      if self.messageFetcher.arrayOfallChatMessagesData.count > 0 && !isCheckLoading{ 
       self.isCheckLoading = true 
       let message = self.messageFetcher.arrayOfallChatMessagesData[0] 
       self.messageIdForMessageDisplay = (message.chatMessageId) 
       self.loadMoreDataLoad(threadId: self.messageFetcher.chatThreadId, isloadFromServer: false) 
      } 
     } 
     print(" scrollViewDidScroll Load Earlier end- \(Utils.stringFromNSDate(Date(), inMillisec: true, useUTC: true)!)") 
    } 
} 

Alors, qui est meilleure façon d'obtenir la charge plus tôt avec la douceur même que comme application whatspp.

+0

loadMoreDataLoad appellera Webservice? pour extraire des données –

+0

Récupérer une base de données locale de formulaire .. –

+0

Vous devez charger les données dans 'cellForRow' dans le cas de la pagination Afficher la méthode' loadMoreDataLoad' –

Répondre

0

Vous devez toujours charger vos données dans la méthode CellForWowatIndexpath, et également utiliser la pagination et charger plus de données lorsque cette dernière cellule est affichée. Vous pouvez appeler load more method sur la méthode cellWillDisplay. Et last but not least, si vous utilisez le chargement des images SDWebimage pour charger l'image de sorte que le défilement devient lisse

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

    // load dats here 



    return cell 
} 

recharger les données lors de la dernière cellule est visible

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { 
    let lastItem = self.YourArray.count - 1 

     if indexPath.row == lastItem 
     { 
      //call load more data method 
     } 

    else{ 
     return 
    } 
} 
+0

Thanx pour le partage .. Mais je veux la mise en œuvre de haut comme App WhatsApp .. –