2009-05-15 8 views
0

J'essaie de télécharger l'image à partir de l'URL et d'utiliser un indicateur d'activité animant pour présenter le fait que le fichier est en cours de téléchargement. Cependant, cela ne fonctionne pas car mon indicateur n'anime pas lorsque j'appelle cette fonction de téléchargement, quelqu'un peut-il me dire pourquoi?UIActivityIndicator problème lors du téléchargement à partir de l'URL

-(void)download{ 
    [indicator startAnimating]; 
    NSString *[email protected]"http://www.xyz.com/path/pic.jpg; 
    NSData *downloadData=[NSData dataWithContentsOfURL:[ NSURL URLWithString:downloadPath]]; 
    if(downloadData){ 
      //do something 
      [indicator stopAnimating]; 
    } 
     else{ 
     //do something 
     [indicator stopAnimating]; 
      } 
    } 
+0

Êtes-vous sûr? Enlevez les lignesAnimating stop. Dans mon expérience, si l'intervalle entre start/stopAnimating est "court", vous ne le verrez pas. – freespace

+0

si je sors le stopAnimating, l'indicateur ne s'anime qu'après le téléchargement des données mais ne démarre pas lorsque la fonction est appelée –

Répondre

0

Vous devez mettre [indicateur startAnimating] et [indicator stopAnimating]; dans des méthodes séparées. Je crois que l'animation ne démarre pas tant que la méthode n'a pas atteint sa fin. Donc, si vous séparez cela en plusieurs méthodes cela devrait fonctionner

  • Une méthode qui démarre l'animation
  • Une méthode qui télécharge le fichier.
  • Une méthode qui arrête l'animation.

Une autre option est le thread pour accomplir cela. Plus d'informations here

0

L'animation est exécutée dans la boucle d'événements, qui se trouve dans le même thread que votre code. C'est-à-dire que l'animation ne démarrera pas pendant que votre code est en cours d'exécution. A la place, vous devez soit oublier l'animation, soit utiliser les méthodes de téléchargement asynchrones, soit effectuer le téléchargement dans un fil séparé. Je recommanderais l'option asynchrone.

Questions connexes