2010-08-31 2 views
0

Эй, у меня есть несколько плотный вопрос о mapKit для iPhone.selectAnnotation после удаления, а затем повторное добавлениеAnnotation

Я использую каркас 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: контактный , обратный вызов (который является этим методом) называется ... в противном случае это не так, но тогда что такое? почему не

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

называется?

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

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

ответ

0

Так что я ответил на мой собственный вопрос ... кажется, что самый простой способ изменить аннотацию при нажатии его, выглядит следующим образом:

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

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

Смежные вопросы