2016-05-12 12 views
0

Ich habe diesen FallWie mehrere Viewcontroller statt anfänglichen Viewcontroller

  • LoginViewController - initial ViewController) vorhanden NavigationControllerB (in NavigationControllerB Ich habe viele Viewcontroller)
  • NavigationControllerB vorhanden ViewControllerC
  • ViewControllerC vorhanden ViewControllerD
entlassen

In der ViewControllerD, wenn der Login-Bereich ist abgelaufen, werde ich zurück zu LoginViewController, so dass ich alle ViewControlelr statt LoginViewController ablehnen möchte?

Irgendeine Idee, das zu tun? Jede Hilfe oder Anregungen wäre toll geschätzt

Ich habe so versucht: Wenn ich die ViewControllerD erfolgreich entlassen, ich sende einen Block zu ViewControllerC dann fahre ich fort, die ViewControllerC entlassen. Danach werde ich die NavigationControllerB, entlassen aber NavigationControllerB haben viele ViewController so muss ich viele block code schreiben, damit ich nicht denke, es ist eine gute Idee,

Antwort

2

Wenn LoginViewController Ihre initialViewController ist, können Sie diesen Code verwenden:

//dismiss all presented view controllers if any 
      UIViewController *vc = self.presentingViewController; 
      while (vc.presentingViewController) { 
       vc = vc.presentingViewController; 
      } 
      [vc dismissViewControllerAnimated:YES completion:NULL]; 
+0

@ PhanVănLinh - Großartig !! Freue mich zu helfen. –

1

Sie etwas tun können, wie,

[[[[[self parentViewController]parentViewController] parentViewController]parentViewController] dismissViewControllerAnimated:YES completion:^{ 

    // perform task after completion 
}]; 

Stellen Sie sicher, Diese Nummer des übergeordneten Viewcontrollers. Dies ist Beispiel dissmiss paraentview Controller nach Ihrem Szenario.

Update:

versuchen so etwas wie dieses,

[self dismissViewControllerAnimated:YES completion:^{ 

    [[[[[self parentViewController]parentViewController] parentViewController]parentViewController] dismissViewControllerAnimated:YES completion:^{ 

     // perform task after completion 
    }]; 

}]; 

Update 2:

[[[[[self parentViewController]parentViewController] parentViewController]parentViewController] dismissViewControllerAnimated:YES completion:^{ 

    [self dismissViewControllerAnimated:YES completion:nil]; 
}]; 

kann etwas tun, entlassen alle vc Eltern und dann Strom entlassen vc Hoffe, das wird helfen :)

+0

ich es in 'ViewControllerD' versucht. aber der 'ViewControllerD' wird nicht abgewiesen. Hier ist mein Code '[[[self parentViewController] parentViewController] ablehnenViewControllerAnimated: YES completion: nil];' Und ich bin mir sicher, dass dieser Code –

+0

aufgerufen wird, zuerst müssen aktuelle vc und dann alle Eltern zu entlassen. Überprüfen Sie mein Update in Antwort – Lion

+0

Ich verwende Ihren Update-Code. Und es wird nur nur "ViewControllerD" –

Verwandte Themen