I have MKMap with a series of MKAnnotations , all of which are red, which is great. I selected "show user location" in IB and change MKAnnotation from red to blue, I have the code in the viewForAnnotation method:
if (annotation == theMap.userLocation) return nil;
Everything is fine and the application is working fine, but if the user accidentally deletes the blue dot userlocation, I get the following crash:
2012-02-01 20:43:47.527 AusReefNSW[27178:11603] -[MKUserLocationView setPinColor:]: unrecognized selector sent to instance 0x79b0720 2012-02-01 20:43:47.528 AusReefNSW[27178:11603] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[MKUserLocationView setPinColor:]: unrecognized selector sent to instance 0x79b0720' *** First throw call stack:
If I delete the above code, everything works fine, but the pin is red. I take on the blue icon, but have not yet discovered why the failure occurred. Any ideas would be good. Thanks.
DECIDE! Thanks to Marvin and heres the code if anyone finds this useful. In a nutshell, I had to first check if MKAnnotation is a MyAnnotation class or MKUserLocation class.
- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKPinAnnotationView *)view { theAnnotationSelected = [[mapView selectedAnnotations] objectAtIndex:0]; if ([theAnnotationSelected isKindOfClass:[MyAnnotation class]] ) { view.pinColor = MKPinAnnotationColorGreen; } - (void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKPinAnnotationView *)view { if ([theAnnotationSelected isKindOfClass:[MyAnnotation class]] ) { view.pinColor = MKPinAnnotationColorRed; }
source share