2010-09-26 8 views
0

Je cherche à créer un thread générique dans mon délégué principal que je peux utiliser pour afficher un indicateur UIActivityIndicator. J'ai plusieurs vues qui poussent de nouvelles vues sur la pile. La plupart des vues sont appelées à partir de la méthode didSelectRow dans la vue appelante. Quand ils sélectionnent une ligne dans un UITableView, je veux commencer l'indicateur d'activité et pousser la nouvelle vue sur la pile. Dans la méthode viewDidLoad de la nouvelle vue, je fais plusieurs appels à un serveur utilisant Json, ce qui peut prendre un certain temps à traiter. Quelle est la meilleure façon d'afficher un indicateur d'activité depuis view1 et de le masquer dans une vue2 une fois le traitement terminé? Suis-je en train de rêver que je pourrais faire 2 méthodes dans mon principal délégué?iPhone UIActivityIndicator fileté aide!

et appelez [startIndicator] depuis view1, ce qui affichera l'indicateur d'activité au-dessus de toutes les vues.

et appeler [stopIndicator] de view2 après le traitement de toutes la méthode viewDidLoad qui cacherait l'indicateur d'activité

Merci pour votre aide!

Répondre

0

Oui, vous pouvez, assurez-vous d'appeler n'importe quelle routine UIKit sur le thread principal. Vous pouvez le rendre plus « fil convivial » en écrivant les routines comme:

-(void)startIndicator { 
    if ([NSThread isMainThread] == FALSE) { 
     [self performSelectorOnMainThread:@selector(startIndicator) withObject:nil waitUntilDone:NO]; 
     return; 
    } 

    /* Actual UIIndicator setup */ 
} 

Si vous avez plusieurs threads qui peuvent démarrer ou arrêter l'indicateur, vous pouvez également ajouter un compte de référence aux routines, incrémenter chaque temps, un thread appelle "start" et décrémente quand il appelle "stop", puis garde l'indicateur d'activité allumé jusqu'à ce qu'un appel "stop" réduise le compte à zéro.

Questions connexes