web-dev-qa-db-fra.com

masquer la barre d'onglets en vue avec push

J'ai une tabBar + NavigationViewController. La barre d'onglets contient une vue de collection avec des cellules (Sayview1) et, avec les cellules, un environnement Push est implémenté dans une autre vue (Sayview2). 

Dansview2je veux avoir une navBar mais pas de barre d’onglet. 

J'ai essayé 

self.tabBarController?.tabBar.hidden = true

cela a bien fonctionné pourview2mais quand je suis revenu surview1par bouton de retour l'onglet était toujours caché (même après dansview1class J'ai ajouté self.tabBarController?.tabBar.hidden = false dans viewDidLoad func). 

Comment faire pour que la barre d'onglets réapparaisse dansview1?

Je travaille à Swift. 

14

Dans viewDidload, définissez UIViewController hidesBottomBarWhenPushed sur yes:

self.hidesBottomBarWhenPushed = YES;

De cette façon, la UINavigationController se charge de cacher la barre d’onglet.

26
rckoenes

Utiliser dans prepareforsegue

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"showRecipeDetail"]) {
    NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
    RecipeDetailViewController *destViewController = segue.destinationViewController;
    destViewController.recipeName = [recipes objectAtIndex:indexPath.row];

    // Hide bottom tab bar in the detail view
    destViewController.hidesBottomBarWhenPushed = YES;
}}

=) 

24
Bruno

 enter image description here

Essayez de vérifier cela sur votre contrôleur!

22
Tiziano Bruschetta

La réponse de Bruno Fernandes dans Swift:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "YourSegueIdentifier" {
        let destinationController = segue.destinationViewController as! YourViewController
        destinationController.hidesBottomBarWhenPushed = true
    }
}

C'était la réponse qui a fonctionné pour moi. Mettre hidesBottomBarWhenPushed dans la méthode viewDidLoad n'a pas fonctionné.

Merci Bruno!

18
Mr Stanev

Vous devez travailler avec viewWillAppear ou viewDidAppear. viewDidLoad sera appelé lors du premier chargement de view1. Si vous passez de view1 à view2 et inversement, viewDidLoad ne sera plus appelé. Par conséquent, vous devez utiliser viewWillAppear ou viewDidAppear comme

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    self.tabBarController?.tabBar.hidden = false
}

Mettez ce code dans votre contrôleur view1. La viewWillAppear ou viewDidAppear sera appelée à chaque fois que vous revenez à view1

3
andre_hold

si vous souhaitez masquer la barre inférieure de TabBarController: #Swift 3

Dans YourViewController: dans la méthode ViewDidLoad ()

self.tabBarController?.tabBar.isHidden = false
1
Kiran jadhav