setNetworkActivityIndicatorVisible спиннер не отображается - PullRequest
2 голосов
/ 06 июня 2011

Как видно из названия, вот код:

- (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];
}

Индикатор активности сети (в строке состояния) вообще не отображается (ни в симуляторе, ни на реальном устройстве). Как мне это решить?

1 Ответ

7 голосов
/ 06 июня 2011

Пользовательский интерфейс не будет обновлен, пока ваш код не вернет управление в runloop.Поэтому, если вы включите и отключите индикатор сети тем же способом, он никогда не будет отображаться.Решение состоит в том, чтобы вызвать

[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];

в ваших методах делегата соединения URL (conectionDidFinishLoading: и connection:didFailWithError:).

...