使用推送隐藏标签栏

时间:2014-11-06 13:28:24

标签: swift uinavigationcontroller uitabbarcontroller pushviewcontroller

我有tabBar + NavigationViewController。标签栏包含带有单元格的集合视图(Say view1 ),并且单元格中的push seague实现到另一个视图(Say view2 )。

view2 中,我想要一个navBar但没有标签栏。

我试过

self.tabBarController?.tabBar.hidden = true

它适用于 view2 ,但当我通过后退按钮返回 view1 时/ strong>该标签仍然隐藏(即使在 view1 类中,我在 viewDidLoad func中添加了self.tabBarController?.tabBar.hidden = false

如何让标签栏重新出现在 view1 中?

我在swift工作。

7 个答案:

答案 0 :(得分:29)

viewDidload中将UIViewController hidesBottomBarWhenPushed设置为yes:

self.hidesBottomBarWhenPushed = YES;

这样UINavigationController负责隐藏标签栏。

答案 1 :(得分:27)

enter image description here

  

确保仅在其选项卡的ViewController上选中此选项   吧,你希望被隐藏。

感谢iHarshil提出建议。

答案 2 :(得分:24)

在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;
}}

=)

答案 3 :(得分:18)

布鲁诺·费尔南德斯在斯威夫特的回答:

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

这是对我有用的答案。将hidesBottomBarWhenPushed置于viewDidLoad方法中无效。

谢谢布鲁诺!

答案 4 :(得分:8)

就我而言,在按下目标视图控制器之前,我先使用hidesBottomBarWhenPushed

func showSecondViewController() {
  let vc = SecondViewController()
  vc.hidesBottomBarWhenPushed = true
  self.navigationController?.pushViewController(vc, animated: true)
}

答案 5 :(得分:3)

您必须使用viewWillAppearviewDidAppear。当view1第一次加载(显示)时,将调用viewDidLoad。如果从view1移动到view2并返回viewDidLoad,则不会再次调用。因此,您必须使用viewWillAppear或viewDidAppear,如

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

    self.tabBarController?.tabBar.hidden = false
}

将此代码放在view1控制器中。每次导航回view1时都会调用viewWillAppearviewDidAppear

答案 6 :(得分:1)

如果你想隐藏TabBarController底栏:#Swift 3

  

在YourViewController中:在ViewDidLoad()方法中

self.tabBarController?.tabBar.isHidden = false