Selectannotation após a remoção e depois re-addingannotation
-
26-09-2019 - |
Pergunta
Ei, todos, eu tenho uma pergunta densa sobre o MAPKIT para o iPhone.
Estou usando a estrutura do MAPKIT e o que estou tentando fazer é basicamente clicar em um pino, recarregá -lo e depois mostrar que é a chamada depois que ele foi adicionado novamente.
Este é o código que estou tentando começar a trabalhar ..
-(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];
Algumas observações: se eu comentar as notações de remoção e addannotation linhas, entro em um loop infinito porque, quando seleciononação: PIN, o retorno de chamada (que é esse método) é chamado ... Caso contrário, não é, mas o que é ? Por que não é
[self.mapView selectAnnotation:pin animated:TRUE];
sendo chamado?
Eu já li muito e quebrei minha cabeça por muitas horas tentando descobrir isso que uma explicação e uma correção para o meu código seriam muito mais úteis do que um link.
Desde já, obrigado. ~ Fydo
Solução
Então, eu respondi minha própria pergunta ... parece que a maneira mais fácil de mudar a anotação ao clicar nela é a seguinte:
-(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];
Este método delegado será chamado, então uma bolha de anotação será exibida e o AnoTationView mudará sua imagem ... o que é tudo o que eu precisava fazer ...