Search code examples
iphoneuitableviewuitabbarcontrollertabbar

Is it possible to hide the tabbar when a button is pressed to allow a full screen view of the content?


I have a UITabBar in the detail view of my navigation based application. I am storing text and images in a tableview and would like the user to be able to tap on a cell to hide the navigation controller and the tabbar for full screen viewing of the content.

I found this code for hiding the top bars, but it does not seem as easy to hide the tabbar.

[[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES];
 [self.navigationController setNavigationBarHidden:YES animated:YES];

Does anyone know how to do this?

This code does not work to hide the tabBar once the view is already loaded.

  yourTabViewController.hidesBottomBarWhenPushed = YES;

This is the code I found. Seems to only work when the view is loaded though, so it can't be used to hide the tabbar once it has already appeared. I'm still struggling to make this work. Please help!!!

    self.tabBarController.tabBar.hidden = YES;

Solution

  • The best workaround I have found is to change the view size so that it covers the tabbar. Here's my code for hiding the statusBar, navBar, and tabBar when a row is selected:

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    
    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    
    if (appDelegate.navigationController.navigationBar.hidden == NO)
    {
        [[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES];
        [appDelegate.navigationController setNavigationBarHidden:YES animated:YES];
    
        [UIView beginAnimations:@"HideTabbar" context:nil];
        [UIView setAnimationDuration:.2];
        self.view.frame = CGRectMake(0,0,320,480);
        [UIView commitAnimations];
    }
    if (appDelegate.navigationController.navigationBar.hidden == YES)
    {
        [[UIApplication sharedApplication] setStatusBarHidden:NO animated:YES];
        [appDelegate.navigationController setNavigationBarHidden:NO animated:YES];
    
        [UIView beginAnimations:@"ShowTabbar" context:nil];
        [UIView setAnimationDuration:.2];
        self.view.frame = CGRectMake(0,0,320,368);
        [UIView commitAnimations];
    }   
    }