2010-09-20 8 views
1

Une vue est présentée de façon modale:Comment pousser à nouveau contrôleur de vue de la vue modale qui implémente UITabBarController

[self presentModalViewController:modalNavController animated:YES]; 

Ce point de vue utilise un UITabBarController avec 4 éléments. Un de ces éléments, "Info" a un bouton qui n'est visible que s'il est disponible. Si le bouton est cliqué, il doit pousser vers un autre contrôleur de vue, mais je voudrais également maintenir la barre d'onglets de sa vue parent. Je n'ai pas été capable de comprendre comment faire cela avec ou sans garder la barre d'onglets. J'ai essayé de pousser et de présenter Modalement dans tous les endroits que je pouvais imaginer. Comment cela devrait-il être fait correctement?

Création barre d'onglets:

infoController.title = @"Info"; 
    streetViewController.title = @"Street View"; 
    reviewController.title = @"Reviews"; 

    streetViewController.tabBarItem.image = [UIImage imageNamed:@"flag.png"]; 
    infoController.tabBarItem.image = [UIImage imageNamed:@"openMarker.png"]; 
    reviewController.tabBarItem.image = [UIImage imageNamed:@"reviews.png"]; 


UITabBarController *tabBarController = [[UITabBarController alloc] init]; 
    tabBarController.view.frame = CGRectMake(0, 0, 320, 460); 

    UINavigationController *infoNC = [[[UINavigationController alloc] initWithRootViewController:infoController] autorelease]; 
    infoNC.navigationBarHidden = YES; 


[tabBarController setViewControllers: 
    [NSArray arrayWithObjects:infoNC, streetViewController, reviewController, nil]]; 


[self.view addSubview:tabBarController.view]; 

Répondre

2

Lorsque vous ajoutez les contrôleurs de vue sur le contrôleur de barre d'onglets que vous devez faire ceci:

MyCustomViewController *vc1 = [[MyCustomViewController alloc] initWithNibName:nil bundles:nil]; 
UINavigationController *nc1 = [[[UINavigationController alloc] initWithRootViewController:recipesRootView] autorelease]; 
[vc1 release]; 

puis ajouter nc1 au lieu de votre vue personnalisée.

Puis, en MyCustomViewController-push un autre contrôleur de vue faire:

[self.navigationController pushViewController:(UIViewController *)page animated:YES]; 

Cela devrait travailler pour vous, et de garder le contrôleur de barre d'onglets.

+0

Merci pour la pensée claire, Thomas. Le problème que je reçois maintenant est que le bouton "Retour" une fois que la deuxième vue est ouverte, ferme la hiérarchie entière de la vue modale. Je vais essayer de remplacer le bouton de retour avec un putton différent qui apparaît dans la vue actuelle. –

+0

pouvez-vous poster votre code entier ci-dessus s'il vous plaît afin que je puisse voir comment vous faites le contrôleur de barre d'onglets et autres. Je ne sais pas pourquoi cela arrive, parce que ça ne devrait pas vraiment être le cas. :) vous ne créez pas le contrôleur de barre d'onglets ** IN ** un contrôleur de navigation êtes-vous? # –

+0

Je édite. Im ajoutant la vue de barre d'onglets comme subview. –

Questions connexes