2016-04-15 17 views
1

Ich versuche, Apple Maps innerhalb der Map zu öffnen, die ich erstellt habe, und dabei bekomme ich eine Fehlermeldung, dass "unerkannter Selektor an Instanz senden ". Ich verwende Lichtbogen, also sollte es kein Gedächtnismanagementproblem geben. Hier ist der Code, den ich in ViewDidLoad geschrieben habe. Ich habe einen Knopf und hat einen Selektor, um es ..Unbekannter Selektor wird an Instanz gesendet, während versucht wird, Apple Maps App in meiner App zu öffnen

UIButton *appleMapsButton = [[UIButton alloc] init]; 
appleMapsButton.frame = CGRectMake(100, 100, 200, 200); 
appleMapsButton.backgroundColor = [UIColor redColor]; 
[appleMapsButton addTarget:self action:@selector(appleMapsClicked:) forControlEvents:UIControlEventTouchUpInside]; 
[mapView addSubview:appleMapsButton]; 

Hier ist die Aktionsmethode:

-(void)appleMapsClicked{ 

CLLocationCoordinate2D endingCoord = CLLocationCoordinate2DMake(lat, lng); 
MKPlacemark *endLocation = [[MKPlacemark alloc] initWithCoordinate:endingCoord addressDictionary:nil]; 
MKMapItem *endingItem = [[MKMapItem alloc] initWithPlacemark:endLocation]; 

NSMutableDictionary *launchOptions = [[NSMutableDictionary alloc] init]; 
[launchOptions setObject:MKLaunchOptionsDirectionsModeDriving forKey:MKLaunchOptionsDirectionsModeKey]; 

[endingItem openInMapsWithLaunchOptions:launchOptions]; 
} 

Hier ist der Fehler, den ich im Debugger Bereich bin immer:

- [ MapViewController appleMapsClicked:]: nicht erkannter Selektor an Instanz 0x176564d0 gesendet 2016-04-15 16: 10: 39.394 Restaurant [1081: 220822] *** Beenden der App aufgrund der nicht abgefangenen Ausnahme 'NSInvalidArgumentException', Grund: '- [MapViewController appleMapsClicked:] : unerkannter Selektor gesendet zum Beispiel 0x176564d0'

Antwort

3

Sie registrieren, um die Nachricht mit der Methode appleMapsClicked: zu empfangen, aber Ihre Methode hat keinen Parameter.

Entfernen der:, oder Ändern der Methodensignatur zu -(void)appleMapsClicked:(id)sender sollte es beheben.

0

gefunden Lösung:

Wenn Sie eine Methode als Selektor und das Verfahren hinzufügen, hat keine Parameter stellen Sie den Doppelpunkt neben dem Verfahren wie folgt:

(mySelector:) 

Durch den Ausschluss der Doppelpunkt, stürzte die App nicht ab.

0

Lösungen:

  1. Ändern der Methode -(void)appleMapsClicked mit -(void)appleMapsClicked:(UIButton *)sender

  2. Ändern Sie den Namen des Wählers @selector(appleMapsClicked:) mit @selector(appleMapsClicked)

Sie jemand dieser Lösungen können wählen

2

Das passiert mir die meiste Zeit. Der beste Weg, um diesen Fehler zu löschen, der "an erster Stelle nicht passieren soll", ist:

1) Löschen Sie Ihre UIButton und die IBOutlet 2) Erstellen Sie eine neue UIButton erneut und erneut mit dem ViewController verbinden.

Um herauszufinden, ob dies das Problem ist, löschen Sie alle Ihre Codes in Button-Funktion und führen Sie. Wenn Sie die Taste drücken und trotzdem einen Fehler macht, müssen Sie nur eine neue Schaltfläche erstellen.

Dies könnte eine Lösung für einige sein.

1

Sie haben wahrscheinlich eine Schaltfläche umbenannt oder entfernt, die appleMapsClicked auf MapViewController aufruft.

Die gleiche Sache mir passiert ist, aber ich konnte es nicht die üblichen Wege beheben, (rechts auf den Button klicken und die Methode Referenz von UI zu entfernen)

Dann konnte ich das Problem beheben, indem Öffnen Main.StoryBoard mit ein externer Editor (Rechtsklick auf Main.StoryBoard und Klick auf "Öffnen mit einem externen Editor").

Es öffnet das Storyboard als XML-Datei. Suchen Sie im Editor nach "appleMapsClicked" unter dem MapViewController-Knoten. Das erste, was Sie finden können, ist eine Referenz auf eine Methode (appleMapsClicked), die nicht mehr existiert. Löschen Sie die Zeile und führen Sie sie erneut aus.

Das mag sich als eine fiese Lösung anhören, da Sie nicht mit automatisch generierten Dateien mit Xcode herumhantieren sollten, aber das war mein einziger Ausweg.

Ich hoffe, es hilft ein bisschen.