2009-10-19 13 views
6

Tengo una aplicación en este momento que muestra varios pines en un mapa. He tratado de establecer mapView.showsUserLocation = YES; para mostrar pos actual del usuario, sin embargo, esto se estrelló mi aplicación ("Programa recibió la señal: SIGABRT") con el siguiente mensaje de error:Uso de la propiedad showUserLocation de MKMapView

Mon Oct 19 12:31:27 unknown Hull Ads[3111] <Error>: *** -[MKUserLocation counter]: unrecognized selector sent to instance 0x10ad60 
Mon Oct 19 12:31:27 unknown Hull Ads[3111] <Error>: *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[MKUserLocation counter]: unrecognized selector sent to instance 0x10ad60' 
Mon Oct 19 12:31:27 unknown Hull Ads[3111] <Error>: Stack: (...) 

Esto es un poco confuso, ya que no tengo Usado MKUserLocation, o es ese el problema?

La aplicación hace uso de CoreLocation para otros fines no relacionados sin embargo, la aplicación responde de la misma manera cuando CoreLocation no se está utilizando ya.

¡Si alguien pudiera ayudar, sería increíble!

Gracias - James

+0

Mi reparación temporal es agregar un pin nuevo y cambiar su color, pero seguramente el pin de Ubicación actual debería estar disponible para su uso. –

+0

Gracias por hacer esta pregunta. ¡Terminó ayudándome a mí también! – Kenny

Respuesta

24

Asegúrese de incluir lo siguiente en este método:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation { 
    if ([annotation class] == MKUserLocation.class) { 
     return nil; 
    } 
    ... 
} 

espero que ya haya solucionado esto por ahora;)

+0

¡Hola, no he trabajado en este proyecto por un tiempo, pero lo intentaré más tarde esta noche, gracias! –

+0

Sí, esta fue la solución, ¡gracias! ¡Espero que esto ayude a alguien más con el mismo problema en el futuro! –

+0

¡Gracias, esto me ayudó! – mservidio

1

Gracias por responder Berend la pregunta y james.ingham por preguntarlo! ¡He estado buscando una solución para este problema durante meses y este hilo lo solucionó!

La comprobación del tipo de pin MKUserLocation sería lo más lógico. Pero, ¿quién recuerda hacer eso al implementar el método viewForAnnotation? Incluso si no va a utilizar MKuserlocation en su aplicación, sería una práctica segura hacer siempre esta comprobación para evitar problemas en el futuro.

+1

Bienvenido a la pila desbordada –