J'ai créé un UIProgressView
. Mais j'ai utilisé NSTimer
au processus UIProgressView's
. Maintenant, je dois intégrer le processus UIProgressView
, lorsque l'URL est en cours de chargement. UIProgressView's
taille dépendra des données NSURLConnection's
.Ajouter le processus de chargement NSURLConnection sur UIProgressView
J'ai utilisé le code suivant pour NSURLConnection
.
-(void)load {
NSURL *myURL = [NSURL URLWithString:@"http://feeds.epicurious.com/newrecipes"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:myURL
cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
timeoutInterval:60];
[[NSURLConnection alloc] initWithRequest:request delegate:self];
}
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
responseData = [[NSMutableData alloc] init];
}
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[responseData appendData:data];
}
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
[connection release];
UIAlertView *alert = [[UIAlertView alloc] init];
[alert setTitle:@"Warning"];
[alert setMessage:@"Network Connection Failed?"];
[alert setDelegate:self];
[alert addButtonWithTitle:@"Yes"];
[alert show];
[alert release];
NSLog(@"Error");
}
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
responsetext = [[[NSString alloc] initWithData:responseData encoding: NSASCIIStringEncoding] autorelease];
}
Comment déclarer réponse à didReceiveResponse, s'il vous plaît modifier le code suivant. - (void) connexion: (NSURLConnection *) connexion didReceiveData: (NSData *) données { \t totalFileSize = response.expectedContentLength; \t receivedDataBytes + = [longueur de données]; \t NSLog (@ "totalFileSize/totalFileSize =% f", receivedDataBytes/totalFileSize); \t [responseData appendData: données]; } – Velmurugan
didReceiveResponse et didReceiveData sont 2 délégués différents. Il doit être: - (void) connexion: (NSURLConnection *) connexion didReceiveResponse: (NSURLResponse *) réponse { totalFileSize = response.expectedContentLength; } et de supprimer cette ligne de didReceiveData – Hless
Édité ma réponse. J'ai oublié de mentionner que l'une des valeurs avec lesquelles vous divisez doit être castée dans un flotteur. Puisque vous pourriez autrement finir avec un nombre entier, sans précision de flotteur. – Hless