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

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

1)我创build了一个故事板的初始容器,并将其embedded到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,并在我的containerViewController的顶部放置一个UINavigatinBar。 当我运行该项目时,没有导航栏显示。 那么,如果我不能在我的初始容器视图控制器中,没有embedded到UINavigationController中,那么IB中的UINavigationBar实际上做了什么? 还是只是为了美观,你只能用它与UINavigationControllers? 谢谢。

1)是的,我认为这是一个很好的方式来引用子视图控制器的东西。 另一种方法是在容器控制器本身中定义该条button项,然后将目标设置为self.childViewControllers.lastObject(假设只有一个)。

2)这应该工作。 您是否拖动导航栏,或者只是将顶部栏的模拟指标更改为导航栏? 后者仅用于IB的可视化布局,据我所知 – 实际上并没有增加一个。