Поэтому, когда я нажимаю на аксессуар выноски в моем mapView, в течение нескольких секунд ничего не происходит, потому что он делает запрос URL и анализирует его, поэтому я хотел показать индикатор активности, чтобы пользователь не подумал, что он завис. Вот код:
- (void)mapView:(MKMapView *)mv annotationView:(MKAnnotationView *)pin calloutAccessoryControlTapped:(UIControl *)control {
// start activity indicator
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
NSLog(@"tapped");
ArtPiece *artPiece = (ArtPiece *)pin.annotation;
//when annotation is tapped switches page to the art description page
artDescription *artD = [[artDescription alloc] initWithNibName:@"artDescription" bundle:nil];
artD.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
artD.startingLocation = mapView.userLocation.location.coordinate;
artD.selectedArtPiece = artPiece;
NSLog(@"0");
[self presentModalViewController:artD animated:YES];
NSLog(@"1");
[artD loadArt:artPiece];
NSLog(@"2");
// stop activity indicator
//[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
[artD release];
}
Как ни странно (по крайней мере, для меня, может быть, я упускаю что-то очевидное, поскольку я довольно неопытен), индикатор активности не отображается до тех пор, пока метод не будет выполнен, и модальное представление не начнет анимироваться. Я вставил NSLogs, чтобы посмотреть, на что нужно время. У меня была пауза в 2 секунды между «0» и «1» и еще пара секунд между «1» и «2». Затем индикатор наконец-то показал, так что я уверен, что он по какой-то причине ждет окончания метода. Есть идеи, почему?