выберите Аннотацию после удаления, затем повторно добавив Аннотацию - PullRequest
0 голосов
/ 01 сентября 2010

Привет всем, у меня возник довольно сложный вопрос о mapKit для iPhone.

Я использую инфраструктуру MapKit, и в основном я пытаюсь щелкнуть булавку, перезагрузить ее и затем показать ее callOut после ее добавления.

Это код, который я пытаюсь заставить работать ..

-(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view{
    NSLog(@"count of selected Annotations: %d",[mapView selectedAnnotations].count);
    MKAnnotation* pin = view.annotation;
    [mapView deselectAnnotation:pin animated:FALSE];
    [mapView removeAnnotation:pin];
    [mapView addAnnotation:pin];
    [self.mapView selectAnnotation:pin animated:TRUE];

Несколько замечаний: если я закомментирую строки removeAnnotations и addAnnotation, я попаду в бесконечный цикл, потому что, когда я выбираю selectAnnotation: pin, вызывается обратный вызов (который является этим методом) ... иначе это не так, тогда что? почему не

[self.mapView selectAnnotation:pin animated:TRUE]; 

звонили?

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

Заранее спасибо. ~ Fydo

1 Ответ

0 голосов
/ 01 сентября 2010

Итак, я ответил на свой собственный вопрос ... кажется, что самый простой способ изменить аннотацию при нажатии на нее - это:

-(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view{
    MKAnnotation* pin = view.annotation;
    UIImageView * blackPin = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"PinUnchecked.png"]];
   [[mapView viewForAnnotation:pin] addSubview:blackPin];

Будет вызван этот метод делегата, затем будет отображен пузырь annotationView, и annotationView изменит свое изображение ... это все, что мне нужно было сделать ...

...