it-swarm.com.ru

Как скрыть/показать панель вкладок вида с панелью навигации в 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;
}

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

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

[self makeTabBarHidden:YES];

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

58
dork

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

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

Вы также можете сделать это в Интерфейсном Разработчике для раскадровки. Выберите View Controller, для которого вы хотите скрыть панель вкладок, а затем выберите «Hide Bottom Bar on Push».

 enter image description here

35
Suragch

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

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

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

13
boliva
self.navigationController.hidesBottomBarWhenPushed=YES;

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

2
Yogesh Dalavi

попробуйте это для скрытия/шоу;

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

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

self.tabBarController?.tabBar.isHidden = true
1
Sandu

вы можете использовать приведенный ниже код, но tabBar остается скрытым при переходе назад.

    //hide tabbar
    //self.tabBarController?.tabBar.isHidden = true

лучший способ это сделать через main.storyboard проверить "Hide Bottom Bar on Push", как я сделал.

 enter image description here

0
Soropromo

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

0
ShowPony