无法为Tab Bar Controller中嵌入的视图配置UINavigationBar

时间:2015-01-18 11:01:53

标签: ios objective-c storyboard xcode6

我正在编写一个应用程序(iOS8),它最终需要通过来自UITableView的segue加载UITabBarController。在大多数情况下,这个设置可以通过Storyboard完成并按预期工作,但是我还想将UIButtonBarItem添加到目标视图中,这是问题开始的地方。

可以按如下方式配置有效的设置(没有UITabBarController)

  1. 该按钮使用“显示”segue显示最终视图控制器
  2. 通过从第一个视图控制器(How to add buttons to navigation controller visible after segueing?)上复制导航项来添加第二个UIBarButtonItems
  3. Working setup

    如果我在模拟器中运行它,一切都按预期工作,我看到后退按钮和所需的“添加”UIBarButtonItem:

    Working in Simulator

    如果我然后将最终视图控制器嵌入到UITabBarController中,我添加的UIBarButtonItem消失了,到目前为止我对故事板设置所做的任何更改(例如在UITabBarContoller和最后一个视图之间添加UINavigationController)或尝试以编程方式添加UIBarButtonItem并没有什么区别:

    Not working setup Not working simulator

    是否有最终设置使用UITabBarController和UIBarButtonItems?

2 个答案:

答案 0 :(得分:0)

我在其中一个应用中使用了相同的设置,但效果很好。不确定为什么会出现问题,但我确实在我的自定义选项卡控制器中添加了几行代码,可能会对您有所帮助。我认为问题是原始导航控制器中的导航栏仍然显示,因此子类UITabBarController并将这些行放在viewWillAppear中:

-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [self.navigationItem setHidesBackButton:YES];
    [self.navigationController setNavigationBarHidden:YES];
    self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}

在我的应用程序中,标签栏控制器之前的视图是登录/注册视图,因此在进入选项卡控制器" stack,"之后没有理由导航回它们。但我确定添加一个完成此操作的后退按钮会很困难。我相信你只需要[self.navigationController setNavigationBarHidden:YES];行,它只隐藏导航栏而不是隐藏后退按钮或禁止弹出手势。

答案 1 :(得分:0)

我知道这已经晚了但我只想添加swift 3代码。 原因是tabBarController的NavigationBarA隐藏了位于tabBarController和最终ViewController之间的NavigationBarB。所以你只需要设置隐藏NavigationBarA

在最终ViewController的viewWillAppear中,您可以添加以下内容(无需子类tabBarController)

self.tabBarController?.navigationController?.setNavigationBarHidden(true, animated: false)