Ich habe eine MKMap
mit einer Reihe von MKAnnotations
die alle rot sind, was gut ist. Ich habe "Benutzerstandort anzeigen" in IB ausgewählt und die MKAnnotation
von rot auf blau, ich habe den Code in meinem viewForAnnotation
Methode:
if (annotation == theMap.userLocation)
return nil;
Alles ist gut und die App funktioniert einwandfrei, aber wenn der Benutzer versehentlich auf den blauen Punkt für den Benutzerstandort tippt, erhalte ich den folgenden Absturz:
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:
Wenn ich den obigen Code entferne, funktioniert alles gut, aber der Pin ist rot. Ich bevorzuge es, das blaue Symbol zu haben, habe aber noch nicht herausgefunden, warum der Absturz. Für jede Idee wäre ich dankbar. Danke!
GELÖST! Vielen Dank Marvin und hier ist der Code, falls jemand findet es nützlich. Kurz gesagt, musste ich zuerst prüfen, ob die MKAnnotation der Klasse MyAnnotation oder der Klasse MKUserLocation angehörte.
- (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;
}