1

Ich habe jetzt seit fast 2 Stunden mit diesem Ringen gerungen und kein Glück.iOS: Rückgabe von Pushed ViewController über Delegate-Methoden?

Ich habe einen View Controller. Lass es uns zuerst nennen. Ich drücke einen Knopf und es bringt mich zum zweiten Ansicht Controller mit einem modalen Stil. In Second füge ich einige Daten hinzu, die ich über zwei Schaltflächen der Navigationsleiste speichern oder löschen kann: Speichern und Abbrechen. Beide machen was sie tun und dann bringen sie mich zum vorherigen Bildschirm zurück. Ich habe ein Protokoll implementiert und benutze den Delegierten. Bis jetzt funktioniert alles gut.

Heute entschied ich mich für einen Third View Controller, auf den vom Second VC zugegriffen werden kann. Das Problem ist, dass ich nicht zu THIRD wechseln konnte, bis ich den Übergang von First zu Second zu PUSH (statt Modal) geändert habe. Jetzt kann ich von der ersten zur zweiten und von der zweiten zur dritten gehen. Alles wieder gut.

DAS PROBLEM: Wenn ich auf dem zweiten VC Abbrechen oder Speichern drücken, ruft es die Methoden, den Delegierten zu FIRST gehen nutzt und eine Funktion ausführen, aber wenn es ruft:

[self dismissViewControllerAnimated:YES completion:nil];

nichts passiert und ich bin auf der zweiten Ansicht fest. Im Grunde benutzte ich MODAL mit Delegierten- und Protokollmethoden ... Ich wechselte zu PUSH, und ich kann meine zweite Ansicht nicht loswerden und zu First zurückkehren. Es sieht so aus, als würde der disneyViewController nichts tun.

Jede Hilfe wird sehr geschätzt. Ich kann das alles beheben, indem ich den Cancel-Knopf entferne und die BACK-Taste benutze, die standardmäßig mit PUSH kommt, aber ich möchte nur wissen, was das Problem damit ist. DANKE !!

+1

Verwenden Sie popViewController: animiert, wenn Sie viewControllers auf den Navigationsstapel schieben. disneyViewController: animiert ist ausschließlich für modalViews. –

+0

Danke @HubertKunnemeyer! Das ist die richtige Lösung und es funktioniert! –

Antwort

2

Auf Ihrem 2. viewContrller rufen Sie die UINavigationController Methode popViewControllerAnimated: oder popToRootViewControllerAnimated:. Dadurch wird der Controller (der eine Aufrufer, der zweite) vom Nav-Stapel entfernt. Sie können den Navigationscontroller in einer UIViewController über seine Eigenschaft navigationController abrufen.

+0

Arbeitete perfekt! Ich danke dir sehr ! Aber nur für die Aufzeichnung. Warum genau funktionierte die andere Methode nicht? –

+0

Nvm Hubert erklärte es oben. Abweisung ist nur für modale Ansichten! –