代码之家  ›  专栏  ›  技术社区  ›  Corey Floyd

在视图控制器弹出后,当填充离开底部栏时设置隐藏底部栏

  •  16
  • Corey Floyd  · 技术社区  · 16 年前

    我有以下设置:

    一个标签栏应用程序。 在一个选项卡上有一个导航控制器。

    我的工作流程:

    当我将一个新的viewcontroller推到导航控制器堆栈上时,我设置了hidesbottbarwhenpushed属性。

    这很好,当新的视图控制器滑动到位时,标签栏被“按下”。

    问题:

    当我弹出这个视图控制器时,根视图控制器再次显示,但是,选项卡栏不见了。

    导航控制器已增大,以填满选项卡栏留下的空间。

    是否需要设置属性以使选项卡栏再次可见?


    我试过的:

    手动弹出到根视图

    为根视图设置(重置)隐藏的底部栏

    调整根视图的大小

    调整导航控制器的“视图”属性的大小(只在tab bat应该在的地方留下一个“空白区域”)

    什么“sorta”起作用了:

    如果我将选项卡栏控制器的选定索引设置为任何其他索引,则将显示选项卡栏。所以我知道它还在“附近”,但这对我没什么帮助。

    9 回复  |  直到 8 年前
        1
  •  105
  •   Dave Batton    15 年前

    我也有这个问题。当我按下ButoBar时,按下了错误的视图控制器。

    错了(但似乎在你突然出现之前有效):

    self.hidesBottomBarWhenPushed = YES;
    [self.navigationController pushViewController:self.anotherViewController animated:animated];
    

    正确的:

    self.anotherViewController.hidesBottomBarWhenPushed = YES;
    [self.navigationController pushViewController:self.anotherViewController animated:animated];
    
        2
  •  9
  •   eddy    15 年前

    这和我遇到的问题一样,但我找到了解决办法,试试这个 我发现躲起来,然后在推后立即显示标签栏,解决了我们的问题

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
     NSDictionary *theItem = [items objectAtIndex:indexPath.row];
     DetailController *nextController = [[DetailController alloc] initWithItem:theItem];
     self.hidesBottomBarWhenPushed = YES;
     [self.navigationController pushViewController:nextController animated:YES];
     //
     //[nextController setHidesBottomBarWhenPushed:YES];
     self.hidesBottomBarWhenPushed=NO;
    
     [nextController release];
    

    }

        3
  •  6
  •   brynbodayle    11 年前

    如果你用的是 UINavigationController 如果想在一个视图控制器中隐藏选项卡栏(底部栏),请将此代码放在要隐藏选项卡栏的视图控制器中:

    - (BOOL)hidesBottomBarWhenPushed {
    
        return [self.navigationController.visibleViewController isEqual:self]; 
    }
    

    我尝试的其他方法只是设置属性,在使用隐藏的选项卡栏从视图控制器中推送新的视图控制器后(甚至在将属性设置为“否”之后),选项卡栏被隐藏。

        4
  •  1
  •   Grouchal    16 年前

    我在我的应用程序中做了类似的事情-只是打电话:

    [self.navigationController popToRootViewControllerAnimated:YES];
    

    似乎做的技巧和标签栏是回来-不可否认,这是回应按钮按下,而不是导航栏弹出按钮。我似乎还记得当使用导航条后退按钮时它工作得很好。

    请检查是否仅将单个视图控制器设置为将hidesbottbarwhenpushed属性设置为yes。

        5
  •  1
  •   DaveShaw Thishin    13 年前

    除此之外:

    [self.navigationController popToRootViewControllerAnimated:YES];
    

    刚开始的时候 self.hidesBottomBarWhenPushed = YES;

    你得换衣服 viewControllerToBePushed.hidesBottomBarWhenPushed = YES;

    那应该可以完成工作!

        6
  •  1
  •   Thomas Decaux    11 年前

    好奇的是,我从未设置此值,但在我想要的viewcontroller上覆盖它:

    - (BOOL) hidesBottomBarWhenPushed
    {
        return YES;
    }
    
        7
  •  1
  •   William Hu    9 年前

    敏捷的 :

    self.hidesBottomBarWhenPushed = true
    self.performSegueWithIdentifier("viewcontroller_details", sender: nil)
    self.hidesBottomBarWhenPushed = false
    
        8
  •  0
  •   malhal Benzy Neez    12 年前

    在弹出带有工具栏的视图控制器后出现的视图控制器中,尝试以下魔术:

    - (void)viewWillAppear:(BOOL)animated {
        [self.navigationController setToolbarHidden:YES animated:YES];
    }
    
        9
  •  0
  •   Bilal Ahmad    8 年前

    斯威夫特3: 在代码中,必须将pushedcontroller.hidesbottbarwhenpushed设置为true。

    Storyboard: 选择按下的控制器,转到属性检查器,选择“视图控制器”下的“按下时隐藏底部栏”选项。