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.
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.
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;
}}
=)
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!
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
si vous souhaitez masquer la barre inférieure de TabBarController: #Swift 3
Dans YourViewController: dans la méthode ViewDidLoad ()
self.tabBarController?.tabBar.isHidden = false