使用容器视图控制器访问导航栏
Posted
技术标签:
【中文标题】使用容器视图控制器访问导航栏【英文标题】:accessing navigation bar with container view controller 【发布时间】:2012-12-06 23:23:28 【问题描述】:编写自己的容器时关于 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) 我想我可以在我最初的 ContainerViewController 上添加一个 UINavigationBar。我所做的是删除我的故事板中的 UINavigatinController 并将 UINavigatinBar 放在我的 containerViewController 的顶部。当我运行项目时,没有显示导航栏。那么如果我不能在我的初始容器视图控制器中拥有它而不嵌入到 UINavigationController 中,IB 中的 UINavigationBar 实际上会做什么?还是只是为了美观而只能与 UINavigationControllers 一起使用?谢谢。
【问题讨论】:
【参考方案1】:1) 是的,我认为这是从子视图控制器引用某些内容的好方法。另一种方法是在容器控制器本身中定义该条形按钮项,然后将目标设置为 self.childViewControllers.lastObject(假设只有一个)。
2) 这应该可以。您是拖入导航栏,还是只是将顶部栏的模拟指标更改为导航栏?后者仅用于 IB 中的视觉布局,据我所知——它实际上并没有添加一个。
【讨论】:
(1) 谢谢。尝试仍然具有导航控制器的后栏按钮功能时遇到了麻烦。 (2) 我确实从 IB 中拖了一个,但由于某种原因它没有显示... @Crystal,我并不完全清楚你想要完成什么。有关您的设置的更多详细信息会有所帮助。以上是关于使用容器视图控制器访问导航栏的主要内容,如果未能解决你的问题,请参考以下文章