Замена calloutaccessoryview в mkannotationview - PullRequest
4 голосов
/ 05 апреля 2010

В моем делегате viewForAnnotation я создаю MKAnnotationView с leftCalloutaccessory в качестве информационной кнопки. Когда нажата информационная кнопка, я хочу заменить ее на UIActivityIndicator. Итак, в делегате calloutAccessoryTapped я написал view.leftCalloutaccessoryView = [UIActivityIndicator indicatorWithStyle:UIActivityIndicatorWhite];

Аксессуар выноски, кажется, меняется, но кажется, что представление обновляется не сразу.

Вот когда аксессуар выноски скрывается (при нажатии на другую булавку) и снова открывается, я вижу счетчик. Но в остальном я не знаю.

Я тоже пытался дозвониться до [view setNeedsdisplay], [view setNeedsLayout] и [view layoutsubviews], но тщетно.

Любые предложения / указатели?

Ответы [ 2 ]

0 голосов
/ 08 июня 2012

У меня была похожая проблема - мне нужно было отобразить изображение для LeftCalloutAccessoryView, если оно было связано с аннотацией. Попробуйте установить его в mapView: didSelectAnnotationView, а не в mapView: viewForAnnotation

-(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)annotView
{
    ...

    if(imgURL.length>1){            
        // set a thread that will load the image 
        // but don't set the leftCalloutAccessoryView until the image is loaded 
        dispatch_queue_t downloader = dispatch_queue_create("annotation image downloader",NULL);
        dispatch_async(downloader, ^{
            NSURL* photoURL = [NSURL URLWithString:imgURL];
            NSData* photoData = [NSData dataWithContentsOfURL:photoURL];
            UIImage* photoImage = [UIImage imageWithData:photoData];
            dispatch_async(dispatch_get_main_queue(), ^{
                annotView.leftCalloutAccessoryView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 32, 32)];
                [(UIImageView *) annotView.leftCalloutAccessoryView setImage:photoImage];
            });                
        });
    }
}
0 голосов
/ 09 апреля 2010

Я бы рассмотрел удаление и повторное добавление вашей аннотации.Это кажется немного тяжелым, но может сработать.

...