2016-08-12 8 views
-1

Wenn ich in meiner Anwendung 5 View-Controller verwende, und wenn ich auf dem 5. View-Controller war, welchen Code sollte ich schreiben, wenn ich auf eine Button-Aktion zum 2. View-Controller zurückkehren möchte?Wie komme ich zurück zum Controller?

+8

Haben Sie in der Dokumentation zu 'UINavigationController' geschaut? – rmaddy

Antwort

1

Das einzige, was Sie tun können, ist popToViewController.

So gibt es mehrere Schritte:

  1. die UIViewController erhalten, die Sie zurück zu gehen.
  2. Holen Sie alle View-Controller aus dem Navigationscontroller, indem Sie etwas wie self.navigationController.viewControllers tun.
  3. Führen Sie a für jede Schleife aus und fügen Sie eine if-Bedingung hinzu, damit jede mit der Ansichtssteuerung übereinstimmt, die Sie von Schritt 1 aus haben möchten.
  4. Verwenden Sie die popToViewController-Methode des Navigationscontrollers.

So etwas wie folgt:

for (UIViewController *vc in self.navigationController.viewControllers) { 
    if ([vc isKindOfClass:[ViewController2 class]]) { 
     [self.navigationController popToViewController:vc animated:NO]; 
    } 
} 
+0

Das erste Argument von 'popToViewController' sollte die Variable' vc' sein. – rmaddy

+0

Keine Notwendigkeit für die Schleife oder 'if'. Tun Sie einfach '[self.navigationController popToViewController: self.navigationController.viewControllers [1] animiert: YES];'. Das Array "viewControllers" befindet sich in der Reihenfolge, in der die View-Controller gestapelt sind. – rmaddy

+0

@rmaddy Korrigierte die Antwort, danke für das Aufzeigen. Und ja, ich habe ihm die for-Schleife vorgeschlagen, weil er vielleicht weiß, in welche Controller-Klasse er gehen soll, aber den Index nicht kennt. – Harsh

Verwandte Themen