MKAnnotationn leftcalloutaccessoryview не получает обновления - PullRequest
1 голос
/ 21 ноября 2011

Я пытаюсь добавить изображение из URL на. Я использую тему для загрузки изображения. я передаю объект MKAnnotationView другому методу и загружаю изображение в этом методе. Когда я нажимаю на аннотацию в первый раз, изображение загружается, но не отображается в аннотации, а когда я нажимаю снова во второй раз, оно отображается. Я не могу найти в чем ошибка.

-(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view
{
    NSLog(@"Selected View Tag = %d", view.tag);
    UIImageView *imaged = [[UIImageView alloc]initWithFrame:CGRectMake(0,0,31,31)];
   act = [[UIActivityIndicatorView alloc]initWithFrame:CGRectMake(0,0,31,31)];

    [act startAnimating];
    [imaged addSubview:act];



    view.leftCalloutAccessoryView = imaged;

    [NSThread detachNewThreadSelector:@selector(threadaimage:) toTarget:self withObject:view];



}
-(void)threadaimage:(MKAnnotationView*)imageview1
{

    NSLog(@"Selected Tag in Thread Method = %d",imageview1.tag);


    UIButton *imag = [[UIButton alloc]init];
    imag.frame = CGRectMake(0, 0, 31, 31);
    NSData *imageData = [NSData dataWithContentsOfURL:
                                                  [NSURL URLWithString:[image_arr objectAtIndex:imageview1.tag]]];
    NSLog(@"%@",[image_arr objectAtIndex:imageview1.tag]);

    [imag setImage:[UIImage imageWithData:imageData] forState:UIControlStateNormal];
    [self.view addSubview:imag];
    imageview1.leftCalloutAccessoryView = imag;
    [act stopAnimating];
}

1 Ответ

1 голос
/ 21 ноября 2011

Хорошо, думаю, я наконец-то понял это для Вас:)

То, что я сделал, было - я создал кнопку, добавил к ней ActivityIndicator в качестве подпредставления, и, когда изображение загружено, я настроилизображение к той же кнопке.И удалить индикатор активности.Работает на моей стороне.Вот код, с которым я закончил:

-(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view
{
    UIButton *customAccessoryButton = [UIButton buttonWithType:UIButtonTypeCustom];

    customAccessoryButton.frame = CGRectMake(0, 0, 31, 31);


    act = [[UIActivityIndicatorView alloc]initWithFrame:CGRectMake(0,0,31,31)];

    [act startAnimating];

    [customAccessoryButton addSubview:act];

    view.leftCalloutAccessoryView = customAccessoryButton;

    [NSThread detachNewThreadSelector:@selector(threadaimage:) toTarget:self withObject:view];
}


- (void)threadaimage:(MKAnnotationView*)imageview1
{
    UIButton *customAccessoryButton = (UIButton*)imageview1.leftCalloutAccessoryView;

    NSData *imageData = [NSData dataWithContentsOfURL:
        [NSURL URLWithString:@"http://www.gemini.edu/images/stories/press_release/pr2008-6/fig1.jpg"]];

    [customAccessoryButton setImage:[UIImage imageWithData:imageData] forState:UIControlStateNormal];

    [act removeFromSuperview];

    [act stopAnimating];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...