2013-04-07 8 views
7

Ich habe einen UIViewController mit einer Schaltfläche, die einen modalen Übergang zu einem UIViewController als Formularblatt ausführt. Auf diesem Formularblatt befindet sich eine Abbrechen-Schaltfläche mit einem Abwicklungsabschnitt zurück zum ursprünglichen UIViewController. Dies scheint perfekt zu funktionieren und entlässt das Formular.iOS Unwind Segue funktioniert nicht mehr, wenn es in einen Navigationscontroller eingebettet ist

Sobald ich den ursprünglichen UIViewController auswähle und die Option in XCode zum Einbinden in einen Navigations-Controller auswähle, scheint der Abwicklungsabschnitt nicht mehr zu funktionieren und das modale Formularblatt wird nicht mehr abgebrochen.

Ich bin mir sicher, dass es eine einfache Erklärung gibt, aber es entzieht sich mir derzeit, so dass alle Gedanken willkommen sind.

Danke.

Antwort

13

Ich weiß nicht, warum Sie das Verhalten erhalten, das Sie sehen, ich sehe es auch. Dies geschieht sowohl für die Seiten- als auch für die Formulardarstellung, nicht jedoch für den Vollbildmodus. Das Abwicklungssegment ruft jedoch immer noch die Methode auf, die Sie in den ursprünglichen Controller eingegeben haben (den, mit dem Sie den Abwicklungsabschnitt verbunden haben). Also, alles, was Sie tun müssen, ist eine Zeile in dieser Methode setzen:

[self dismissViewControllerAnimated:YES completion:nil]; 
+0

Ja, du hast Recht, das funktioniert ... Sehr seltsames Verhalten, aber richtig, es funktioniert gut für den Vollbildmodus? Vielen Dank. – Darren

+0

@Darren, ja, das scheint mir ein Fehler zu sein. Ich konnte keine Dokumentation finden, die darauf hinweisen würde, dass dies beabsichtigt ist. – rdelmar

+2

Ich sehe das auch auf ios 8.2 mit einem iPad Retina Simulator. IMO das ist ein Bug – Sam

0

Diese bereits beantwortet, aber die oben hat mir nicht die volle Lösung geben, so dass ich dachte, dass ich meine teilen.

Für mich wurde die Abwicklungsmethode nie aufgerufen, also konnte ich nicht tun, was oben beschrieben wurde. Stattdessen habe ich eine einfache Schaltfläche mit einer IBAction erstellt und aufgerufen. Swift Beispiel unten:

@IBAction func cancelToRecipeController() { 
    self.dismissViewControllerAnimated(true, completion: nil) 
    print("cancel to recipe controller ran") 
} 

Dank @rdelmar oben für den Methodenaufruf!

(Dies wurde für ios 9 hinzugefügt) gut

0
self.dismissViewControllerAnimated(true, completion: nil) 

"entlassen" nicht für mich arbeiten, aber popToRoot funktioniert.

Verwandte Themen