Подтвердить что ты не робот

Как скрыть/показать панель вкладок с помощью панели навигации в iOS?

У меня есть представления с панелью навигации и панель вкладок. То, что я хотел бы сделать, - это скрыть панель вкладок на определенном представлении и снова показать панель вкладок, когда пользователь меняет представления.

Я увидел фрагмент кода для скрытия панели вкладок:

-(void)makeTabBarHidden:(BOOL)hide
{
    // Custom code to hide TabBar
    if ( [tabBarController.view.subviews count] < 2 ) {
        return;
    }

    UIView *contentView;

    if ( [[tabBarController.view.subviews objectAtIndex:0] isKindOfClass:[UITabBar class]] ) {
        contentView = [tabBarController.view.subviews objectAtIndex:1];
    } else {
        contentView = [tabBarController.view.subviews objectAtIndex:0];
    }

    if (hide) {
        contentView.frame = tabBarController.view.bounds;       
    }
    else {
        contentView.frame = CGRectMake(tabBarController.view.bounds.origin.x,
             tabBarController.view.bounds.origin.y,
             tabBarController.view.bounds.size.width,
             tabBarController.view.bounds.size.height - tabBarController.tabBar.frame.size.height);
    }

    tabBarController.tabBar.hidden = hide;
}

from: http://nickwaynik.com/iphone/hide-tabbar-in-an-ios-app/

Я вызываю это в представлении, в котором я хочу, чтобы панель вкладок была скрыта

[self makeTabBarHidden:YES];

он отлично работает, когда я показываю/скрываю его в этом представлении, но когда я перехожу назад к предыдущему виду, панель вкладок также скрыта. Я попытался вызвать эту функцию в представлении viewDidUnload, viewWillDisappear, viewDidDisappear, но ничего не происходит. То же самое верно, когда функция вызывается в предыдущем представлении viewDidLoad, viewWillAppear, функции viewDidAppear.

4b9b3361

Ответ 1

Вместо этого вы можете установить UIViewController.hidesBottomBarWhenPushed:

DetailViewController *detailViewController = [[DetailViewController alloc] init];
detailViewController.hidesBottomBarWhenPushed = YES;
[[self navigationController] pushViewController:detailViewController animated:YES];    
[detailViewController release];

Ответ 2

Вы также можете сделать это в построителе интерфейса для раскадровки. Выберите контроллер просмотра, который вы хотите скрыть панель вкладок, а затем выберите "Скрыть нижнюю панель при нажатии".

введите описание изображения здесь

Ответ 3

Я только что создал категорию в UITabBarController, которая позволяет скрыть TabBar, необязательно с анимацией:

https://github.com/idevsoftware/Cocoa-Touch-Additions/tree/master/UITabBarController_setHidden

Он добавляет свойство tabBarHiddenisTabBarHidden в качестве получателя) и метод - (void)setTabBarHidden:(BOOL)hidden animated:(BOOL)animated.

Ответ 4

self.navigationController.hidesBottomBarWhenPushed=YES;

Добавьте эту строку в viewdidload или viewWillAppear это скроет вашу вкладку снизу.

Ответ 5

Swift 3: Установить скрытие панели в viewwillAppear или viewdidappear

self.tabBarController?.tabBar.isHidden = true

Ответ 6

Такое же свойство доступно в инспекторе атрибутов, когда вы нажимаете на свой контроллер представления в своем файле Xib или раскадровки.

Ответ 7

попробуйте это для hide/show;

-(void)viewWillDisappear:(BOOL)animated{
    self.hidesBottomBarWhenPushed = NO;
}
-(void)viewWillAppear:(BOOL)animated{
    self.hidesBottomBarWhenPushed = YES;
}