Search code examples
iphoneobjective-ccocoa-touchuiprogressbar

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


Solution

  • 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.