我有一个带有4个标签的标签栏控制器,每个标签都是他们自己的UINavigationController,这就是你应该如何将标签栏和导航控制器嵌套在一起。初始选项卡是一个TableViewController,它的工作方式应该是这样的。从tableVC我可以将标准视图控制器推送到导航控制器上:
[self.navigationController pushViewController:VC animated:YES];
它运作正常。
如果我尝试使用相同的方法将另一个TableViewController推送到导航上,它的工作方式相同,但初始标签栏不会像应该的那样被推离屏幕,它只是保持原位。
即使我将新VC推送到导航栏,为什么标签栏会保留在屏幕上?
我已经测试了不同TableVC的多个实例,它只发生在一个表视图控制器上。
以下是我使用的代码:
- (void)pushTableVC
{
TestTableVC *tableVC = [[TestTableVC alloc] init];
[self.navigationController pushViewController:tableVC animated:YES];
}
这会将新的表视图推送到堆栈,但是来自父VC的标签栏保持不变,并且不会像应该的那样被推离屏幕。
答案 0 :(得分:1)
您应该在正在推动的视图控制器上调用方法setHidesBottomBarWhenPushed:
以正确隐藏标签栏。
UIViewController *viewController = [[UIViewController alloc] init];
[viewController setHidesBottomBarWhenPushed:YES];
[[self navigationController] pushViewController:viewController animated:YES];
答案 1 :(得分:0)
当您使用UITabBarController
时,标签栏始终保留在屏幕上,即使您将其他视图控制器推送到嵌入式UINavigationController
也是如此。您将在任何已实施UITabBarController
的应用中看到此内容,除非他们实施自定义行为以更改此内容。
UINavigationController
包含UITabBar
以上的所有内容,但不包含UITabBar
本身,因此无法将其推送到屏幕外。