2011-06-05 3 views
1

Comme le dit le titre, voici un code:spinner setNetworkActivityIndicatorVisible ne pas afficher

- (void)refreshMap { 
    NSLog(@"refreshing"); 
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES]; 
    lat = [[NSNumber numberWithDouble:myUserLocation.coordinate.latitude] stringValue]; 
    lon = [[NSNumber numberWithDouble:myUserLocation.coordinate.longitude] stringValue]; 

    NSString *url = [[NSString alloc] initWithFormat:@"http://mywebsite.com/geo_search.json?lat=%@&lon=%@", lat, lon]; 
    NSURLRequest *theRequest=[NSURLRequest requestWithURL:[NSURL URLWithString:url] 
               cachePolicy:NSURLRequestUseProtocolCachePolicy 
              timeoutInterval:60.0]; 
    [[NSURLConnection alloc] initWithRequest:theRequest delegate:self]; 
    [url release]; 
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO]; 
} 

L'indicateur d'activité réseau (dans la barre d'état) ne semble pas du tout (pas dans le simulateur, ni sur un dispositif réel). Comment résoudre ce problème?

Répondre

7

L'interface utilisateur ne sera pas mise à jour sauf si votre code renvoie le contrôle à la boucle de démarrage. Donc, si vous activez et désactivez l'indicateur de réseau dans la même méthode, il ne s'affichera jamais réellement. La solution est d'appeler

[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO]; 

dans vos méthodes de délégué de connexion url (conectionDidFinishLoading: et connection:didFailWithError:).

+0

De même, vous ne démarrez pas 'NSURLConnection'. En fait, vous ne l'avez même pas enregistré en tant que variable. –

+0

@Aleksader: la connexion démarre automatiquement avec '-initWithRequest: delegate:'. –

+0

merci, a parfaitement fonctionné :) – koichirose

Questions connexes