hide tab bar in view with push

五迷三道 提交于 2019-12-03 11:03:46

问题


I have a tabBar + NavigationViewController. The Tab bar has collection view with cells(Say view1) and with cells a push seague is implemented to another view(Say view2).

In view2 I want to have a navBar but no tab bar.

I tried

self.tabBarController?.tabBar.hidden = true,

it worked fine for view2 but when I went back to view1 by back button the tab was still hidden( even after in view1 class I added self.tabBarController?.tabBar.hidden = false in viewDidLoad func).

How can i make the tab bar reappear in view1?

I'm working in swift.


回答1:


In the viewDidload set the UIViewController hidesBottomBarWhenPushed to yes:

self.hidesBottomBarWhenPushed = YES;

This way the UINavigationController takes care of hiding the tab bar.




回答2:


Make sure to check this option only on the ViewController whose tab bar you wish to be hidden.

Thanks to iHarshil for the suggestion.




回答3:


Use in 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;
}}

=)




回答4:


Bruno Fernandes's answer in Swift:

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

This was the answer that worked for me. Putting hidesBottomBarWhenPushed in the viewDidLoad method didn't work.

Thanks Bruno!




回答5:


You have to work with viewWillAppear or viewDidAppear. viewDidLoad will be called when view1 is loading (showing) the first time. If you move from view1 to view2 and back the viewDidLoad won't be called again. Therefore you have to use viewWillAppear or viewDidAppear like

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

    self.tabBarController?.tabBar.hidden = false
}

Put this code in your view1 controller. The viewWillAppear or viewDidAppear will be called every time navigating back to view1




回答6:


if you want to hide TabBarController Bottom Bar : #Swift 3

In YourViewController : in ViewDidLoad() method

self.tabBarController?.tabBar.isHidden = false


来源:https://stackoverflow.com/questions/26780719/hide-tab-bar-in-view-with-push

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!