无法为选项卡栏控制器中嵌入的视图配置 UINavigationBar
Unable to configure UINavigationBar for view embedded in Tab Bar Controller
我正在编写一个应用程序 (iOS8),它最终需要通过 UITableView 的 segue 加载 UITabBarController。在大多数情况下,此设置可以通过故事板完成并按预期工作,但是我还想将 UIButtonBarItem 添加到问题开始的目标视图。
一个有效的设置(没有 UITabBarController)可以配置如下
- 该按钮使用 "Show" segue 来显示最终视图控制器
- 第二个 UIBarButtonItems 是通过复制第一个视图控制器中的导航项添加的 (How to add buttons to navigation controller visible after segueing?)
如果我 运行 在模拟器中这样做,一切都按预期工作,我看到后退按钮和所需的 "Add" UIBarButtonItem:
如果我随后将最终视图控制器嵌入到 UITabBarController 中,我添加的 UIBarButtonItem 将消失并且到目前为止我对故事板设置所做的任何更改(例如在 UITabBarContoller 和最后一个视图之间添加 UINavigationController)或尝试以编程方式添加 UIBarButtonItem 没有任何区别:
有没有办法让最终设置同时使用 UITabBarController 和 UIBarButtonItems?
我在我的一个应用程序中进行了相同的设置,并且运行良好。不确定您遇到问题的原因,但我确实在我的自定义选项卡控制器中添加了几行代码,可能会对您有所帮助。我认为问题在于原始导航控制器的导航栏仍在显示,因此子类 UITabBarController 并将这些行放在 viewWillAppear:
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self.navigationItem setHidesBackButton:YES];
[self.navigationController setNavigationBarHidden:YES];
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}
在我的应用中,选项卡栏控制器之前的视图是 login/register 视图,因此没有理由在进入选项卡控制器后导航回它们 "stack," 但我确定添加完成此操作的后退按钮并不困难。我相信您只需要 [self.navigationController setNavigationBarHidden:YES];
行,它只隐藏导航栏而不是隐藏后退按钮或不允许弹出手势。
我知道这已经晚了,但我只想添加 swift 3 代码。
原因是 tabBarController 的 NavigationBarA 隐藏了位于 tabBarController 和最终 ViewController 之间的 NavigationBarB。所以你只需要设置隐藏 NavigationBarA
在您最终的 viewWillAppear 中 ViewController 您可以添加以下内容(无需子类化 tabBarController)
self.tabBarController?.navigationController?.setNavigationBarHidden(true, animated: false)
我正在编写一个应用程序 (iOS8),它最终需要通过 UITableView 的 segue 加载 UITabBarController。在大多数情况下,此设置可以通过故事板完成并按预期工作,但是我还想将 UIButtonBarItem 添加到问题开始的目标视图。
一个有效的设置(没有 UITabBarController)可以配置如下
- 该按钮使用 "Show" segue 来显示最终视图控制器
- 第二个 UIBarButtonItems 是通过复制第一个视图控制器中的导航项添加的 (How to add buttons to navigation controller visible after segueing?)
如果我 运行 在模拟器中这样做,一切都按预期工作,我看到后退按钮和所需的 "Add" UIBarButtonItem:
如果我随后将最终视图控制器嵌入到 UITabBarController 中,我添加的 UIBarButtonItem 将消失并且到目前为止我对故事板设置所做的任何更改(例如在 UITabBarContoller 和最后一个视图之间添加 UINavigationController)或尝试以编程方式添加 UIBarButtonItem 没有任何区别:
有没有办法让最终设置同时使用 UITabBarController 和 UIBarButtonItems?
我在我的一个应用程序中进行了相同的设置,并且运行良好。不确定您遇到问题的原因,但我确实在我的自定义选项卡控制器中添加了几行代码,可能会对您有所帮助。我认为问题在于原始导航控制器的导航栏仍在显示,因此子类 UITabBarController 并将这些行放在 viewWillAppear:
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self.navigationItem setHidesBackButton:YES];
[self.navigationController setNavigationBarHidden:YES];
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}
在我的应用中,选项卡栏控制器之前的视图是 login/register 视图,因此没有理由在进入选项卡控制器后导航回它们 "stack," 但我确定添加完成此操作的后退按钮并不困难。我相信您只需要 [self.navigationController setNavigationBarHidden:YES];
行,它只隐藏导航栏而不是隐藏后退按钮或不允许弹出手势。
我知道这已经晚了,但我只想添加 swift 3 代码。 原因是 tabBarController 的 NavigationBarA 隐藏了位于 tabBarController 和最终 ViewController 之间的 NavigationBarB。所以你只需要设置隐藏 NavigationBarA
在您最终的 viewWillAppear 中 ViewController 您可以添加以下内容(无需子类化 tabBarController)
self.tabBarController?.navigationController?.setNavigationBarHidden(true, animated: false)