web-dev-qa-db-fra.com

comment utiliser la barre de progression dans l'application iphone

Dans mon application iPhone, je télécharge des données à partir d'un serveur FTP. Pour montrer l'action, j'utilise UIActivityIndicator. Si je mets UIProgressView à la place de UIActivityIndicator, ce sera plus approprié. Comment utiliser UIProgressView lors du téléchargement de données? Quelqu'un peut-il me donner un lien de tutoriel ou un exemple de code? Merci d'avance.

20
Ravi

d'abord, vous créez IBOutlet dans un fichier .h

IBOutlet UIProgressView * threadProgressView;

Ensuite, dans le fichier .m de viewdidload, définissez d'abord Progress à 0.0, puis appelez la méthode makeMyProgressMoving

    threadProgressView.progress = 0.0;
    [self performSelectorOnMainThread:@selector(makeMyProgressBarMoving) withObject:nil waitUntilDone:NO];

puis ajoutez la méthode ci-dessous

- (void)makeMyProgressBarMoving {

        float actual = [threadProgressView progress];
        if (actual < 1) {
            threadProgressView.progress = actual + ((float)recievedData/(float)xpectedTotalSize);
            [NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(makeMyProgressBarMoving) userInfo:nil repeats:NO];
        }
        else{



        }

    } 

donnez également votre avis pour la réponse. cela vous est-il utile?

41
Dhaval Rathod

C'est assez simple. Il vous suffit de définir la valeur appropriée de la propriété progress sur UIProgressView.

En tant que délégué de NSURLConnection, vous devriez recevoir la quantité de données que vous attendez pour télécharger et mettre à jour progress pendant le téléchargement. Progress est représenté par une valeur à virgule flottante comprise entre 0.0 et 1.0, inclus, 1.0 indiquant l'achèvement de la tâche.

4
Nekto

Vous pouvez afficher l'avancement de la barre de progression avec ces lignes de code

-(void) connection:(NSURLConnection *) connection 
didReceiveData:(NSData *) data {
   if (file)
   { 
       [file seekToEndOfFile];
        progressView.progress = ((float)recievedData / (float) xpectedTotalSize);
   } 
     [file writeData:data];
     recievedData += data.length;
     NSLog(@"Receiving Bytes: %d", recievedData);
}
4
Ketan Shinde

Une des options est AFNetworking . AFURLConnectionOperation vous permet également de transférer facilement des téléchargements et des téléchargements, de gérer les problèmes d’authentification, de surveiller les téléchargements et de suivre leur progression, ainsi que de contrôler le comportement ou les demandes de mise en cache.

2
SachinVsSachin

noté: self.progressionBalance.progress = 5.0/10.0; 

vous devez définir la décimale.

0
anson