2010-06-09 8 views
2

J'ai vu de nombreuses applications qui chargent des données vers UITableViews à partir d'Internet, et elles se chargent généralement en douceur. Maintenant, c'est à mon tour de charger dans ce genre de données. Je reçois des données différentes en même temps, en séparant les catégories avec ~ et les catégories de catégories avec #. Cela fonctionne très bien, et j'ai réussi à séparer les données dans obj-c parfaitement.UITableView - Chargement de données depuis Internet

Tout dans mon application fonctionne, c'est juste que le chargement prend beaucoup de temps. Donc, je suppose que la vraie question est, comment pouvez-vous charger dans les données pour une tableView en arrière-plan, montrant un label/UIActivityView ou quelque chose pendant le chargement?

Merci.

Répondre

1

La manière la plus simple est d'ajouter une cellule temporaire qui montre une sorte de progression de chargement (étiquette avec le texte 'Chargement ...', ou un indicateur UIActivityIndicator, etc.). Lorsque vos données sont chargées, supprimez cette cellule et ajoutez vos cellules réelles à vos données.

Pour charger les données 'en arrière-plan', je vous recommande de jeter un oeil à NSURLConnection. Il vous permet de charger implicitement les données de manière asynchrone, vous évitant ainsi de devoir gérer les threads.

+1

J'ai beaucoup de manipulations à faire avec la chaîne après l'avoir obtenu, donc j'ai trouvé préférable de mettre cela dans un sélecteur et de faire '[self performSelectorInBackground: selector]'. Donc, ce que je veux savoir, vraiment, c'est comment je peux être informé quand chaque processus d'un sélecteur est fait. – Emil

+2

Dans votre méthode de sélection, vous pouvez appeler performSelectorOnMainThread: withObject: waitUntilDone: lorsque le processus est terminé, une autre méthode de sélection sera appelée dans le thread principal. Donc, fondamentalement, vous appelez manuellement le thread principal lorsque votre thread enfant a fini de travailler pour le notifier. – nebs

+1

J'aimerais vraiment pouvoir donner tous mes points à Nebs! Votre commentaire m'a aidé à résoudre un problème que je dirige. Merci beaucoup! – changelog

0

Je ne comprends pas votre question clairement. Pourquoi n'utilisez-vous pas UIActivityIndicator pour montrer le chargement. Vous pouvez le faire depuis votre plume ou par programme. Il est également possible de charger le contenu à partir d'intenet en utilisant NSXMlParsing qui sera beaucoup plus rapide et affichera un indiacator d'activité jusqu'à ce que toute la date soit analysée et que la table soit entièrement remplie en une seule fois.

Ne répondez pas si vous l'obtenez.

Questions connexes