2012-09-20 32 views
5

Según tengo entendido, no hubo problemas para pasar a los mapas de iOS 6. Pero por alguna razón, el botón de divulgación de detalles ahora falta en mi aplicación de mapa. ¿Hay alguna forma de recuperar esto? Guau, totalmente inesperado. Esto ha estado funcionando durante años, por lo que todos los delegados están bien.iOS6 Maps, FALTA el botón de divulgación de detalles (el chevron azul) en todos mis mapas. Cómo recuperarlo

#pragma mark MKMapViewDelegate 
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation { 

MKPinAnnotationView *pin = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"REUSEME"] autorelease]; 
UIButton *button = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; 

if ([annotation isKindOfClass:[MKUserLocation class]]) { 
    pin.animatesDrop = YES; 
    return nil; 
} else { 
    [pin setPinColor:MKPinAnnotationColorGreen]; 
} 

pin.rightCalloutAccessoryView = button; 
pin.animatesDrop = YES; 
pin.canShowCallout = YES; 

return pin; 
} 
+0

Tengo esto también. Encuentre que si dejo la aplicación en funcionamiento un poco, alejo los pines de la pantalla y viceversa, la llamada funciona una vez más. Parece un error en la compatibilidad, pero debe haber un problema de pedido que lo solucione. ¡Publicaré la respuesta si la encuentro! – sradforth

Respuesta

0

no tengo este problema y la única diferencia que puedo ver entre el código y el mío está en la creación del objeto MKPinAnnotationPinView mientras trato de quitar de la cola en primer lugar:

MKPinAnnotationView *pinView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:@"CustomPinAnnotationView"]; 
0

I tiene el mismo problema y uso el mismo código que la primera respuesta:

MKPinAnnotationView * MyPin = (MKPinAnnotationView *) [mapView dequeueReusableAnnotationViewWithIdentifier: @ "MyPin"];

También me di cuenta otros problemas, ya que la actualización a Xcode 4.5/iOS 6.

0

Lo que he notado en MapKit para iOS 6 es que el tiempo es esencial. Configurando el delegado de MKMapView a fines (es decir, en viewDidLoad), el mapa usará el estilo de anotación predeterminado para las anotaciones ya agregadas. La solución para mí fue mover mapView.delegate = self, al método - (void) loadView.

0

@ErCa Según la documentación de iOS, nunca debe llamar a loadView a menos que esté creando una vista personalizada.

El problema está en otra parte. Lo tengo también y publicaré una respuesta una vez que lo encuentre.

@ ed-potter ¿Está apuntando a iOS4? Pregunto porque liberas el MKPinAnnotationView que no es necesario con ARC.

0

Esto me pasó a mí también. Es cierto que el delegado MKMapView debe configurarse antes que viewDidLoad: ahora por alguna razón. Lo que terminé haciendo fue configurar el delegado mapView dentro de mi función setMapView :.

Así que por el controlador de vista que contiene el MKMapView, tenía la siguiente propiedad:

@property (no atómicas, débiles) IBOutlet MKMapView * MAPview;

y por lo que poner dentro de la función setMapView:

- (void) setMapView: (MKMapView *) MAPview {

_mapView = mapView; 

self.mapView.delegate = self;//needed to move setting of the mapView delegate here because they changed when the viewForAnnotations delegate function is called when Apple went to iOS 6 and changed the maps App. Now all of the annotations are loaded and the views for those annotations are set up before the View Controller even calls viewDidLoad. 

[self updateMapView]; 

}

2

que tenía el mismo problema y establecer el El delegado de MapView en el guión gráfico hizo el truco para mí, ahora funcionan las flechas de leyenda :)

0

Tuve el mismo problema y también establecí self.mapView.delegate = self en viewDidLoad pero no se llamaba a mapView:viewForAnnotation:, por lo que mi leftCalloutAccessoryView no obtenía el UIImageView que especifiqué. Volví a revisar el Introduction to MapKit in iOS 6 Tutorial de Ray Wenderlich y encontré esto:

Primero, seleccione MainStoryboard.storyboard.A continuación, configure View Controller (en la parte superior de la lista) como delegado de la vista de mapa mediante haciendo clic en la vista del mapa y arrastrando una línea desde la entrada del delegado al controlador de vista.

2

que tenía el mismo problema, sólo poner el delegado después de anotación y funciona a la perfección!

mapView.delegate = self; 
[self.mapView addAnnotation:ann]; 

Tks, Cauca

Cuestiones relacionadas