2011-10-25 17 views
5

La mia app posiziona una puntina sulla mappa e quindi seleziona la sua animazione usando così l'utente ha un indizio visivo e può immediatamente leggere il titolo/sottotitolo. Il seguente codice funziona sia in iOS4 che in iOS5, ma in iOS5, l'annotazione non viene selezionata automaticamente a meno che non cambi l'animazione in NO nel metodo selectAnnotation.MKAnnotation non viene selezionata in iOS5

Qualche idea, perché?

MapAnnotations *pushpin = [[MapAnnotations alloc] initWithCoordinate:coordinate]; 
pushpin.title = [selectedStation valueForKey:@"name"]; 
pushpin.subtitle = [selectedStation valueForKey:@"address"]; 
[stationMap addAnnotation:pushpin]; 
[stationMap selectAnnotation:pushpin animated:YES]; 

[pushpin release]; pushpin = nil; 

risposta

5

Non certo perché avrebbe funzionato prima, ma probabilmente l'animazione richiede la vista annotazione deve essere creato e pronto che è improbabile subito dopo aver aggiunto l'annotazione.

Che cosa si può fare è spostare la selezione al metodo didAddAnnotationViews delegato che dovrebbe funzionare su tutte le versioni di iOS:

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views 
{ 
    for (MKAnnotationView *av in views) { 
     if ([av.annotation isKindOfClass:[MapAnnotations class]]) { 
      MapAnnotations *pushpin = (MapAnnotations *)av.annotation; 
      if (_this_pushpin_is_the_one_to_select) { 
       [mapView selectAnnotation:av.annotation animated:YES]; 
       break; //or return; 
      } 
     } 
    } 
} 
+0

Grazie. Devono aver cambiato qualcosa in iOS5 per quanto riguarda le animazioni nelle annotazioni. Questo funziona. Un po 'troppo codice per una cosa così semplice, ma fa il lavoro. – afterxleep

+2

Per evitare la ricerca, è possibile mantenere un riferimento all'annotazione selezionata come un ivar quando lo si aggiunge, quindi è necessario chiamare selectAnnotation nel delegato. – Anna

Problemi correlati