Biranchi
Biranchi

Reputation: 16327

UIProgressbar in Cococa Touch

I want to display an UIProgressbar depending on the amount of data downloaded from the server.

One way I implemented is I made a NSURLConnection and set the delegate. The - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response gave me the expectedContentLengh

And in the - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data I am getting the data part by part every time until all the data are downloaded.

But this did not solve my problem.

Is there any other way to do this ?

All your suggestions are appreciated.

Thanks

Upvotes: 1

Views: 4001

Answers (1)

Ben S
Ben S

Reputation: 69412

If you know the expected content length, just keep a running total of how much you've received so far divided by the total amount you'll get:

// These should be properties of the delegate class
UIProgressView * progressView;
long long expected;
long long gotSoFar; 

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    gotSoFar += data.length;
    progressView.progress = gotSofar / expected;
}

If you get type warnings on the division, cast each long long before doing the division.

Upvotes: 2

Related Questions