2013-06-27 3 views
1

Je développe une application basée sur storyboard et je me demande si je pourrais avoir 2 TabBarControllers - un pour l'utilisateur non connecté et un autre pour l'utilisateur connecté. Puis-je échanger NotLoggedInTabBarController à LoggedInTabBarController sur l'action du bouton de connexion?Basculer entre deux UITabBarController?

Répondre

1

Si vous ajoutez un ID de restauration à vos viewControllers dans le story-board (inspecteur d'identité), vous pouvez instancier un contrôleur en appelant la méthode instantiateViewControllerWithIdentifier:

Dans votre cas, je aurais peut-être instancier un contrôleur de vue parent, et quand voulant échanger des tabBarcontroller, je l'aurais appelé

[parentViewController.storyboard instantiateViewControllerWithIdentifier:@"tabBarController2"]; 

Et puis changez le contrôleur affiché.

(non testé, juste quelques idées ...)

+0

ajouté parent UINavigationController pour mes 2 TabBarControllers et essayé votre code sur Navi gationController viewDidAppera. N'a pas fonctionné –

0

Vous pouvez ajouter à votre IBAction bouton avec vérification de cette condition et instancier contrôleur nécessaire.

ViewController *viewController = nil; 
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
YourViewController *viewController = nil; 
if ([userManager isLoggedIn]) { 
    viewController = (YourViewController *)[storyboard instantiateViewControllerWithIdentifier:@"LoggedInViewControllerIdentifier"]; 
} else { 
    viewController = (YourViewController *)[storyboard instantiateViewControllerWithIdentifier:@"NotLoggedInViewControllerIdentifier"]; 
} 
[self.navigationController pushViewController:viewController animated:YES]; 

dans votre story-board vous devez définir id story-board dans l'inspecteur Identity

EDIT

Si vous n'utilisez pas NavigationController pour acheminer à corriger les contrôleurs connectés/notlogged alors votre pourrait faire sth comme ça:

MyAppDelegate *appDelegate = [UIApplication sharedApplication].delegate; 
[appDelegate.transitionController transitionToViewController:viewController 
               withOptions:UIViewAnimationOptionTransitionFlipFromRight]; 
+0

viewControlled est géré par TabBarController qui n'a aucune méthode pushViewController –

+0

a édité la réponse pour ne pas utiliser le contrôleur de navigation. – Tala

+0

que serait TransitionController? –

Questions connexes