添加第二个UINavigationController

时间:2014-04-04 19:48:38

标签: ios iphone objective-c uinavigationcontroller

我的第一个NavigationController设置了root viewcontroller - PhotoViewController,它是一个带有图像网格的collectionView。当选择图像时,我不想使用根控制器呈现第二个navigationController - DetailViewControler。

我的第一个navigationController是在appDelegate中设置的。我真的不明白我应该如何以及在哪里创建第二个。我没有使用IB。目前我在DetailViewcontroller viewDidLoad中有这个:

    DetailViewController *detailView = [[DetailViewController alloc] init];
self.detailController = [[UINavigationController alloc] initWithRootViewController:detailView];

但是当我试图推动一个新的控制器时,没有任何反应。我猜我的代码在错误的地方。

当我尝试从我的PhotoViewController以模态方式呈现第二个控制器时,我有一个错误(尝试呈现nil viewController)。

2 个答案:

答案 0 :(得分:2)

常见的想法是拥有一个包含 - 并允许您在其他VC之间导航的导航VC。在您描述的情况下,您不会创建另一个导航VC。相反,只创建细节VC并将其推送到现有导航VC ...

// assuming self is a view controller contained by a navigation controller
self.detailController = [[DetailViewController alloc] init];
[self.navigationController pushViewController:self.detailController animated:YES];

答案 1 :(得分:0)

使用父视图控制器作为初始视图控制器,并将导航控制器添加为子控制器,然后在它们之间进行转换。请参阅我写的这篇博文:http://sketchytech.blogspot.co.uk/2012/09/container-view-controllers-parent-view.html