2011-05-21 4 views
1

Salut les gars je travaille sur une application.Où il ya un écran d'accueil avec 5 boutons.Sur le clic de chaque bouton je veux ouvrir l'écran avec la barre de tabulation avec 5 contrôleurs de vue.Je veux dire quand vous cliquez sur le bouton de la barre est ouvert.Et il ya le bouton de retour sur la vue de la barre d'onglets aussi bien. En cliquant sur le bouton de retour, je veux revenir à l'écran d'accueil et vice versa. Comment faire que les gars.Tout tutoriel, liens, exemple de code serait apprécié.Comment gérer les contrôleurs de vue?

+0

pouvez-vous élaborer s'il vous plaît? –

+1

Zoozoo, il y a un écran d'accueil avec contrôleur de navigation ayant 5 boutons, sur le clic de n'importe quel bouton je veux ouvrir l'application dans l'onglet basé comme ayant 4 onglets.Maintenant quand les vues de tabulation viennent il doit y avoir un bouton retour Cliquez sur ce que je veux revenir à l'écran d'accueil des boutons. Avez-vous maintenant me –

Répondre

1

Le contrôleur Tabbar d'une pile de navigation est compliqué. Puisque chaque contrôleur d'onglet peut également avoir le contrôleur de navigation lui-même.

Avoir une classe WindowManager. Il devrait posséder les deux - FirstViewController et - TabbarController

Tous les composants et les UITabbarControllers eux-mêmes devraient être instancié dans la classe WindowManager. Son init peut avoir le code comme ceci, faire semblable pour deux contrôleurs de tabulation.

self.tabBarController = [[UITabBarController alloc] init]; 
    self.controllers = [[NSMutableArray alloc] init]; 

// initialize the view controllers and navigation controllers for the tab bar 

self.friendsVC = [[FriendsVC alloc] initWithNibName:@"FriendsView" bundle:nil]; 
UINavigationController *friendsNVC = [[UINavigationController alloc] initWithRootViewController: friendsVC]; 
friendsNVC.navigationBar.barStyle = UIBarStyleBlack; 
[controllers addObject:friendsNVC]; 
[friendsNVC release]; 

self.paymentsVC = [[PaymentsVC alloc] initWithNibName:@"PaymentsView" bundle:nil]; 
UINavigationController *paymentsNVC = [[UINavigationController alloc] initWithRootViewController: paymentsVC]; 
paymentsNVC.navigationBar.barStyle = UIBarStyleBlack; 
[controllers addObject:paymentsNVC]; 
[paymentsNVC release]; 

tabBarController.viewControllers = controllers; 
tabBarController.selectedIndex = 0; 
tabBarController.delegate = self; 

self.view = tabBarController.view; 

Dans le WindowManager, vous pouvez avoir deux méthodes comme,

[WindowManager showViewController] and 
[WindowManager showTabbarController]. 

- showViewController { 
    //Initiate View controller and use [self.window addSubView:vc.view]; 
} 

- showTabbarController { 
    // initiate the tabbar manager 
} 

Vous pouvez avoir un bouton « retour » sur le dessus de votre premier contrôleur TabBar côté gauche, pour appeler la

[WindowManager showViewController]; 
+0

Hey karim thaks pour votre réponse, j'ai essayé de cette façon, mais le problème se produit lorsque je veux pop à l'écran principal, il ne J'ai tout d'abord pris le homeviewcontroller avec navigationcontroller, puis je l'ai poussé vers la vue tabbar, mais quand je clique sur le bouton de retour sur la barre d'onglets, il n'apparaît pas à la vue de la maison. J'ai alors essayé d'appeler [self.navigationcontroller poptoviewcontroller: YES]; et [self.navigationcontroller.tabbarcontroller poptoviewcontroller: YES]; –

+0

Avoir un contrôleur de barre d'onglets dans une pile de navigation n'est pas souhaitable et déconseillé. J'ai édité la réponse de façon plus élaborée pour faire de même. – karim

+0

Oui je sais que ce n'est pas la bonne approche, et alors l'organisation de la pile ne serait pas bonne. Mais que pourrais-je faire le client veut de cette façon. J'ai dit au T.L. Cela ne peut pas être fait de cette façon, que ce soit en fonction d'un onglet ou de la navigation. –

Questions connexes