Schließen einer Ansicht, die über einen modalen Übergang angezeigt wird


77

Ich rufe manuell einen Segue auf (als modal festgelegt), um ein Anmeldeformular in Xcode 4.2 mithilfe von Storyboards mit der folgenden Codezeile anzuzeigen:

[self performSegueWithIdentifier:@"LoginSegue" sender:nil];

Ich vermisse wahrscheinlich etwas wirklich Einfaches, kann jedoch die Anmeldeansicht nicht programmgesteuert schließen und zur vorherigen Ansicht zurückkehren.

Die Ansicht ist Teil eines Navigationsansichts-Controllers. Wenn ich also den Segue-Typ auf "Push" setze, kann ich die Zurück-Taste verwenden, um zum vorherigen Bildschirm zurückzukehren. Im "Modal" -Modus bin ich mir jedoch nicht ganz sicher, wie erreichen Sie dies (zum Beispiel nach einem Tastendruck)

Jede Hilfe wäre sehr dankbar.


xcode ist nur eine IDE,
ich werde das nicht

Antworten:


172

Wenn Ihr Bereitstellungsziel iOS 5.0 oder höher ist, verwenden Sie diese Meldung:

[self dismissViewControllerAnimated:YES completion:nil];

Oder in Swift:

self.dismissViewControllerAnimated(true, completion: nil)

Wenn Ihr Bereitstellungsziel älter ist, verwenden Sie diese (veraltete) Nachricht:

[self dismissModalViewControllerAnimated:YES];

Danke Rob, ich habe es bereits versucht und es scheint nichts zu tun. Hat dies besondere Bedingungen?
Nick

1
Ich habe einen trivialen Testfall mit zwei VCs in einem Storyboard erstellt. Die anfängliche VC hat eine "Modal" -Taste mit einem modalen Übergang zur zweiten VC. Der zweite VC verfügt über eine Schaltfläche "Verwerfen", die mit einer entsprechenden Methode verbunden ist [self dismissModalViewControllerAnimated:YES]. Es funktioniert wie erwartet. Ich kenne keine besonderen Bedingungen.
Rob Mayoff

Ich möchte nur darauf hinweisen, dass ich dieses Problem behoben habe. Da ich neu in Storyboards bin, habe ich meinen Segue-Typ nicht auf modal one one instance gesetzt, es war also ein Benutzerfehler! Vielen Dank.
Nick

Ich versuche auch dieses: [self.presentingViewController EntlassungViewControllerAnimated: YES Vervollständigung: Null] und es funktioniert auch, warum?
Jianpx

Der präsentierende Ansichts-Controller führt die Entlassung durch. Wenn Sie es an den präsentierten Ansichts-Controller senden, leitet der präsentierte Ansichts-Controller die Nachricht automatisch an den präsentierenden Ansichts-Controller weiter.
Rob Mayoff

13

[self dismissViewControllerAnimated:YES completion:nil]; ist ein neuer Weg in IOS5


5

Folgendes sollte gut funktionieren ...

[self dismissModalViewControllerAnimated:YES];

Ich mache genau das mit einer Anmeldeseite in meinem neuesten Tutorial hier , ohne Probleme.


1
Jetzt in iOS7 veraltet: Verwenden Sie stattdessen EntlassungViewControllerAnimated: Vervollständigung :.
Peter Johnson

4

Der folgende Code funktioniert in Swift 3:

 self.dismiss(animated: true, completion: nil)
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.