5 Stimmen

MKUserLocation blue userLocation MKAnnotation führt bei versehentlicher Berührung zum Absturz der Anwendung

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;
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X