2011-12-22 5 views
4

J'ai deux problèmes avec indicateur d'activité: 1. Indicateur d'activité ne se présente pas sur UIViewControllerIndicateur d'activité ne se présente pas

Je indicateur d'activité ajouté dans le fichier .xib. Au clic du bouton, il devrait commencer à animer. et lorsque la réponse du serveur est reçue, avant d'aller à la page suivante, il devrait cesser d'animer. Je le fais comme suit:

activityIndicator.hidden = NO; 

[activityIndicator performSelector:@selector(startAnimating) withObject:nil afterDelay:0.1]; 

[self.view bringSubviewToFront:activityIndicator]; 

....rest of code here.... 

activityIndicator.hidden = YES; 

[activityIndicator stopAnimating]; 
  1. Indicateur d'activité ne se présente pas sur UITableView

pour une vue de la table, je fais même mais didSelectRowAtIndexPath ...

Pour tableview J'ai également essayé d'ajouter une vue d'activité à l'accessoire de la cellule, mais toujours pas apparaître

Dans les deux cas, l'indicateur d'activité ne se présente pas.

S'il vous plaît aider

Merci

+0

est tout ce code dans une méthode? Quel est le contexte ici? –

+0

oui dans une méthode – iOSDev

Répondre

11

Si tout ce code est une méthode ou en réponse à un événement, alors aucune des modifications aux vues vont être visibles jusqu'à ce que vous revenez à la boucle d'événements. Vous définissez le activityIndicator.hidden sur NO, puis définissez-le à nouveau sur YES avant que l'interface utilisateur n'ait la possibilité de s'actualiser.

Vous avez également apparemment arrêter l'animation avant de le démarrer.

Ce que vous devez faire est de rendre l'indicateur d'activité visible ici et commencer son animation. Puis planifier le travail à faire (démarrer une connexion réseau asynchrone, ou mettre du travail dans une file d'attente, ou tout ce dont vous avez besoin) et revenir de cette méthode afin que l'interface utilisateur puisse actualiser, l'indicateur peut être dessiné, et l'animation peut réellement commencer.

Puis plus tard à un certain point après le travail est terminé, vous pouvez masquer l'indicateur et arrêter l'animation. Mais vous ne pouvez pas faire tout cela sur le thread principal dans un seul tour de la boucle d'événement. Aucun de vos changements ne sera visible car aucun dessin ne se produira ici pendant que cette méthode est en cours d'exécution (en supposant que ce soit sur le thread principal)

J'espère que cela a du sens?

1

Peut être, dans tableView, au lieu de self.view, ce sera self.navigationController.view ??

+0

Pas une vraie réponse. Seule spéculation ... –

2

Maintenant, je modifié le code à ceci:

activityIndicator.hidden = NO; 

[activityIndicator startAnimating]; 

[self performSelector:@selector(saveClicked) withObject:nil afterDelay:0.1];  

[self.view bringSubviewToFront:activityIndicator]; 

et cela a fonctionné :)