使用Navigationcontroller在Tabbarcontroller中构建层次结构

时间:2016-03-03 15:06:34

标签: ios objective-c uiviewcontroller uinavigationcontroller uitabbarcontroller

我有一个Tabbarcontroller,里面装满了5个Viewcontrollers和Navigationcontrollers,就像我在这里做的那样:

[self addChildViewController:VC1];
[self addChildViewController:NavigationController;
[self addChildViewController:VC2];
[self addChildViewController:VC3];
[self addChildViewController:VC4];

现在的问题是,按Tabbar上的按钮可以轻松地将我带到每个ViewController,在那里我可以呈现Xib-Files等。

但现在我想要一个Navigationcontroller,按下Tabbar上的按钮就会显示。这个Navigationcontroller本身有几个Viewcontrollers。

我试着在我的Navigationcontroller中展示我的第一个Viewcontroller(这段代码来自Navigationcontroller.m):

- (void)viewDidLoad {
[super viewDidLoad];

[self addChildViewController:VC5];
[self presentViewController:VC5];

}

这预计不起作用并且给了我:应用程序试图以模态方式呈现一个活动控制器。

是否有实现这一特定目标的好方法?我正在努力解决这个问题。提前谢谢!

编辑:这是我在故事板中设置的方式。在我的编程方法中,未显示第一个视图控制器。

enter image description here

1 个答案:

答案 0 :(得分:1)

当您将NavigationController添加到标签栏时,不是将VC5视图控制器作为子项添加到NavigationController(除非它意味着是孩子?),而是将其添加为根视图控制器。

例如,在标签条形码中:

[self addChildViewController:VC1];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:VC5]; 
[self addChildViewController:navigationController];
[self addChildViewController:VC2];
[self addChildViewController:VC3];
[self addChildViewController:VC4];

UINavigationController上的Apple文档位于:https://developer.apple.com/library/ios/documentation/UIKit/Reference/UINavigationController_Class/#//apple_ref/occ/instm/UINavigationController/initWithRootViewController