这就是我在做的事情。我有一个tabBarControllerOne
,有5个标签。在单击其中一个选项卡时,我提供了一个模态视图控制器,它有一个navigationBar和一个TabBarControllerTwo
(带有3个选项卡)。这三个标签是值得关注的问题。
在tabBarController
的第5个标签中,我将modalViewController显示为
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:self.nextTabView];
// navController.navigationBarHidden = YES;
navController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
NSLog(@"Displauing the navcontroller before pushing %@", navController);
[self presentModalViewController:navController animated:NO];
这里,nextTabView
是一个带有3个标签的tabBarController。意见有效。在视图中,如果我尝试类似的东西。
self.navigationController.navigationBarHidden = YES;
[self.navigationController pushViewController: someController animated:YES];
// nothing works.
如果我是NSLog,它会将self.navigationController
显示为(null)
有人可以告诉我为什么这不起作用吗?
答案 0 :(得分:3)
不支持在UITabBarController
内嵌入UINavigationController
。 Apple有一个仔细的容器视图控制器层次结构,UITabBarController
必须是其视图控制器层次结构的根。
此外,正如Joe指出的那样,您的视图不属于导航控制器;它们属于标签栏控制器,因此未设置navigationController
属性。
答案 1 :(得分:2)
模态视图控制器不属于UINavigationController
堆栈,因此未设置该属性。您将需要使用delegation在选择某些内容时通知创建控制器,然后该控制器可以正确地将下一个控制器推送到堆栈。
讨论
仅在视图控制器处返回导航控制器 在它的堆栈中。如果是导航控制器,则此属性为零 无法找到。