使用容器视图控制器访问导航栏

时间:2012-12-06 23:23:28

标签: ios uiviewcontroller

在编写自己的容器时,有关UINavigationController和UINavigatinBar的两个问题。

1)我用故事板创建了我的初始容器,并将其嵌入到UINavigationController中。我发现childViewControllers访问UINavigationBar的唯一方法是在childViewController的viewDidLoad中执行类似的操作:

UIBarButtonItem *showDetailViewControllerBBI = [[UIBarButtonItem alloc] initWithTitle:@"Show Details" style:UIBarButtonItemStyleBordered target:self action:@selector(switchToCarouselLayout:)];
self.parentViewController.navigationItem.leftBarButtonItem = showDetailViewControllerBBI;

这是获取UINavigationBar的正确方法吗?

2)我以为我可以将UINavigationBar打到我的初始ContainerViewController上。我做的是在我的故事板中删除UINavigatinController并将一个UINavigatinBar放在我的containerViewController的顶部。当我运行项目时,没有显示导航栏。那么,如果我不能在我的初始容器视图控制器中拥有它而没有嵌入UINavigationController,那么IB中的UINavigationBar实际上会做什么?或者仅仅是为了美观,你只能在UINavigationControllers中使用它?感谢。

1 个答案:

答案 0 :(得分:0)

1)是的,我认为这是从子视图控制器引用某些内容的好方法。另一种方法是在容器控制器本身中定义该按钮项,然后将目标设置为self.childViewControllers.lastObject(假设只有一个)。

2)这应该有效。您是否在导航栏中拖动,或者只是将顶部栏的模拟指标更改为导航栏?后者仅用于IB中的视觉布局,据我所知 - 它实际上并没有添加一个。