2013-08-14 4 views
9

Auf einem View-Controller habe ich eine Schaltfläche, die einen anderen View-Controller darstellt. Vom zweiten View-Controller aus kann ich zu anderen View-Controllern gehen, aber nicht unbedingt zu dem, der mich hierher gebracht hat. Wenn dies der Fall ist, wie kann ich den ursprünglichen View-Controller entfernen?iPhone - Entfernen eines präsentierten View-Controllers

+0

Können Sie Code schreiben, was Sie bisher versucht haben. Was benutzt du auch, um den View-Controller zu laden? Ist es UINavigationController? Haben Sie versucht, den View-Controller zu öffnen? –

+0

sieht aus wie hakey Frage für mich ... bitte fügen Sie einige Code, den Sie bisher versucht haben ... –

+0

Wenn ich disneyViewController oder popViewController verwende, wird mich keiner von beiden zum ursprünglichen View-Controller bringen? Ich suche nach einem Weg, wenn möglich, den initialen View-Controller zu verwerfen. – Carmichael

Antwort

25

Ihre Beschreibung hier etwas unklar ist. Es könnte drei verschiedene Fälle hier:

  1. Umzug durch Navigation Controller Hierarchie
  2. aus Navigationssteuerung Hierarchie brechen zu einer anderen Ansicht Controller
  3. nur das Hinzufügen eines weiteren View-Controller Strom in Navigation-Controller-Stack

Im ersten Fall können Sie die Methoden von UINavigationController verwenden:

- (UIViewController *)popViewControllerAnimated:(BOOL)animated 
- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated 
- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated 

und navigieren Sie mithilfe der viewControllers-Eigenschaft durch den Stapel.

Ina zweite, wenn Sie die Hierarchie auf eine völlig andere Ansicht-Controller zu durchbrechen wollen, dann tun Sie es einfach durch:

[[[UIApplication sharedApplication] keyWindow].rootViewController dismissViewControllerAnimated:YES completion:nil]; 
[[UIApplication sharedApplication] keyWindow].rootViewController = newController; 

oder noch besser: in zweiter Linie in Vollendung Block ersten Zeile.

Oder in dritten Fall, wenn Sie nur eine Ausnahme machen wollen, aber ansonsten in der Navigation-Controller-Stack bleibt, dann Methoden verwenden:

- (void)addChildViewController:(UIViewController *)childController 
- (void)removeFromParentViewController 
17

Das hängt davon ab, wie Sie den aktuellen View Controller tatsächlich dargestellt haben. Wenn es modal, dann

[self.presentingViewController dismissViewControllerAnimated:YES completion:nil]; 

Wenn es eine Navigationssteuerung gedrückt wurde mit:

[self.navigationController popViewControllerAnimated:YES]; 
Verwandte Themen