Nachilfe in UINavigationControllern

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Nachilfe in UINavigationControllern

    Hallo, ich bin mir nicht ganz sicher wie ich dieses Problem lösen kann. Ich starte meine App mit einem Loginviewcontroller. Von dort aus wird dann zu einem UITabbarController gepusht:

    Quellcode

    1. ​UITabBarController *obj=[storyboard instantiateViewControllerWithIdentifier:@"tabbarController"];
    2. self.navigationController.navigationBarHidden=YES;
    3. [self.navigationController pushViewController:obj animated:YES];


    Nun habe ich in einem der Tabs die Möglichkeit einbauen wollen, dass man sicher wieder ausloggen kann. Allerdings hat ja jeder Tab einen eigenen NavigationController, das heißt in

    Quellcode

    1. self.navigationcontroller.viewcontrollers
    steht lediglich der ViewControllers des Tabs drin weswegen

    Quellcode

    1. popToRootViewController:
    oder

    Quellcode

    1. [[self presentingViewController] dismissViewControllerAnimated:YES completion:nil];
    nicht funktioniert. Wie komme ich jetzt wieder zurück auf meinen Loginscreen ? Wenn ich den installiere über eine Storyboard ID :

    Quellcode

    1. ​DELoginViewController *loginViewController = [storyboard instantiateViewControllerWithIdentifier:LOGININDENTIFIER];
    2. [[self navigationController]pushViewController:loginViewController animated:YES];

    dann komme ich zwar wieder zu meinem Screen, allerdings habe ich dann beim erneuten einloggen logischerweise 2 Tabbars übereinanderliegend.

    Im Anhang findet ihr auch noch ein Bild von meinem Storyboard, damit man sich das ganze besser vorstellen kann.

    Danke !
    Dateien
  • Aus dem ViewController mit der Möglichkeit des Logouts solltest Du per Property tabBarController an den TabBarController kommen. Dieser sollte dann über das Property navigationController auf den "Root" NavigationController der App verweisen. Dort kannst Du dann per popToRootViewControllerAnimated: wieder den LoginViewController anzeigen. Dies sollte dann so aussehen:

    Quellcode

    1. ​[self.tabBarController.navigationController popToRootViewControllerAnimated:YES];


    Alternativ bietet es sich vielleicht an den TabBarController zum RootViewController des App zu machen und den Login Controller modal vom TabBarController anzuzeigen. Der Login Controller wäre dann auch nur so lange im Speicher wie dieser benötigt wird.
  • Dank dir schonmal für die Hilfe. Mithilfe deines Codes komme ich nun auch wieder auf den Loginbereich, allerdings ist meine Navbar weg/oder weiß ? Kann das daran liegen, dass popToRootViewController den UINavigationController auf nil setzt ?
  • Nein, es liegt sicherlich daran, dass Du vor der Anzeige des TabBarController im NavigationController die NavigationBar per

    Quellcode

    1. self.navigationController.navigationBarHidden=YES;

    ausgeblendet hast. ;)

    Vor dem

    Quellcode

    1. [self.tabBarController.navigationController popToRootViewControllerAnimated:YES];

    solltest Du daher per

    Quellcode

    1. self.tabBarController.navigationController.navigationBarHidden=NO;

    die NavigationBar wieder einblenden.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von MCDan ()