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.

Nick
quelle
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];
Rob Mayoff
quelle
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

denny
quelle
5

Folgendes sollte gut funktionieren ...

[self dismissModalViewControllerAnimated:YES];

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

Simon
quelle
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)
Bogdan Razvan
quelle