Search code examples
iosobjective-cuitabbarcontrolleruinavigationbar

UITabBarController selected item show navigation bar


I'm making an application using UITabBarController and UINavigationController. The view controller diagram look like this:

TabBar Controller > Navigation Controller > View Controller

At the first view controller I'm set navigation bar to hidden. But when I clicked on TabBar items to show other view controller then clicked back to first view controller the navigation bar was shown. Whenever I added in all other view controllers:

 -(void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    self.navigationController.navigationBarHidden = NO;
}

-(void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    self.navigationController.navigationBarHidden = YES;
}

Anyone know how to set my navigation bar in first view controller to always hide? Please help. Thank in advance.


Solution

  • if you are in some view controller have to use this method:

    [self.navigationController setNavigationBarHidden:YES animated:YES];
    

    To hide Navigationbar in any viewController :

    Objective-C

    - (void)viewWillAppear:(BOOL)animated {
        [self.navigationController setNavigationBarHidden:YES animated:animated];   // Will hides Navigationbar  
        [super viewWillAppear:animated];
    }
    
    - (void)viewWillDisappear:(BOOL)animated {
        [self.navigationController setNavigationBarHidden:NO animated:animated]; // Will shows Navigationbar
        [super viewWillDisappear:animated];
    }
    

    Swift

    override func viewWillAppear(animated: Bool) {
        self.navigationController?.setNavigationBarHidden(true, animated: animated)
        super.viewWillAppear(animated)
    }
    
    override func viewWillDisappear(animated: Bool) {
        self.navigationController?.setNavigationBarHidden(false, animated: animated)
        super.viewWillDisappear(animated)
    }