Activité affichage indicateur dans le tableau Voir tout les données de ligne est en cours de récupération

StackOverflow https://stackoverflow.com/questions/2650525

Question

Je navigue de tableview1.row à un tableview2 qui a beaucoup de lignes étant tiré par les cheveux. Étant donné le temps de chargement est d'environ 3 secondes, je veux que la navigation à glisser dans tableview2 dès que le tableview1.row est sélectionné, puis afficher un UIActivityIndicatorView ci-dessus tableview2 alors que les données sont extraites, puis rendu à son point de vue de la table sous-jacente. Remarque, tableview2 est en fait une sous-vue de la UIView mère (par opposition à la société mère étant un UITableView).

Je l'ai vu ce message: Le voyant d'activité doit être affiché lors de la navigation de UITableView1 à UITableView2

... ce qui donne des instructions pour ajouter le démarrage de l'indicateur d'activité et stopAnimating appelle autour des données dans viewDidLoad de vont chercher tableview2.

La chose est, je ne sais pas comment la solution ci-dessus pourrait fonctionner comme fonctionne et complète viewDidLoad avant tableview2 glisse visiblement en vue.

Par ailleurs, j'ai aussi essayé d'ajouter un indicateur d'activité sur tableview2 dans IB et a ajouté démarrage / arrêt du code de l'indicateur animant IBOutlet en viewDidAppear. Ce qui se passe est la recherche de données fonctionne et je peux voir la rotation de l'indicateur, mais à la fin de l'opération d'extraction, la vue de la table est vide. On dirait que viewDidAppear est trop tard pour ajouter des données à la vue de table cellForRowAtIndexPath etc a déjà tiré.

Quelqu'un peut-il s'il vous plaît toute suggestion d'indications? Je pourrais très bien être évident manque quelque chose ici (ses presque cinq heures où je suis et je pense que mon cerveau est bouillie de maïs). Dois-je redéclencher cellForRowAtIndexPath etc de viewDidAppear? La question que mon point de vue de la table est une sous-vue et non la vue parent?

Merci

Était-ce utile?

La solution

Je pris un autre regard sur ma propre question et la réponse est en fait assez simple. Tout traitement très intensif ne devrait généralement pas être exécuté sur le thread principal. Je tentais de faire mes données vont chercher intensive et afficher l'interface utilisateur de l'indicateur d'activité sur le même fil et donc ceux-ci étaient en cours de traitement dans l'ordre, l'un après l'autre.

La solution est d'entrer dans mon nouveau contrôleur de vue et a) le coup d'envoi de l'indicateur d'activité animation sur le thread principal et b) exécuter les extraction de données intensives sur un autre thread (en utilisant performSelectorInBackground). Toutes les mises à jour liées à l'interface utilisateur ne peuvent pas être appliquées à partir du fil de fond. Ceux-ci devraient être de retour remis au thread principal.

Beaucoup de messages SO sur ce déjà (par exemple ici ), mon mauvais pour ne pas ramasser sur ces dès le début:)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top