用导航栏无法做任何事情

时间:2013-07-17 16:26:57

标签: ios uinavigationcontroller uitabbarcontroller uinavigationbar

我有这个结构:

storyboard screenshot

当我想从故事板添加'UINavigationItem'导航栏被“禁用”时,我尝试以编程方式添加右键:

UIBarButtonItem *button = [[UIBarButtonItem alloc]
                           initWithBarButtonSystemItem:UIBarButtonSystemItemAdd
                           target:self
                           action:@selector(showPickerView:)];
self.navigationItem.rightBarButtonItem = button;

但没有任何反应。我从故事板重命名了导航栏标题,但是当我运行应用程序时,标题未设置。我真的不知道问题的根源是什么。只有后退按钮出现。 谢谢你的帮助。

4 个答案:

答案 0 :(得分:2)

标签栏控制器中的每个项目都应该有一个导航控制器作为根控制器(如果你不需要它们,你不需要它们全部都有一个导航控制器)。您目前拥有的是导航控制器中的标签栏控制器(除非它是模态的),因此标签栏控制器中包含的视图控制器无法看到导航控制器。

答案 1 :(得分:1)

正如其他答案所指出的那样,UINavigationViewController的层次结构不正确。 UITabBarViewController将永远是您UINavigationViewControllers的父级。

对于每个 UIViewController ,这是一个“Tab”,你需要UINavigationViewController在每个“tab”UIViewConrolller的“前面”,它将有segues。

所以你不需要为每个“tab”UIViewController都需要一个UINavigationViewController,就像其他人在这个帖子上指出的那样,只有“tabs”才会转向你想要用UINavigationViewController跟踪导航的其他视图

可以在@App Dev Guy的回答here

中看到层次结构

在Swift 2中,Xcode 7有一个非常方便的功能,可以添加UINavigationController:

  1. 选择用作UITabBarNavigationController
  2. “标签”的UIViewController
  3. 在顶部Xcode菜单上,选择“编辑器” - >
  4. “嵌入” - >
  5. “导航控制器”

    enter image description here

答案 2 :(得分:0)

试试这样。这与你的做法有点不同,它对我有用:

UIBarButtonItem *button = [[UIBarButtonItem alloc] 
                           initWithTitle:@"title"                                            
                           style:UIBarButtonItemStyleBordered 
                           target:self 
                           action:@selector(showPickerView:)];
self.navigationItem.rightBarButtonItem = button;

如果您想在故事板中执行此操作,则不要拖动“导航项”,而是拖动“条形按钮项”。

答案 3 :(得分:0)

我试图重现你的问题。

  1. 我开始了一个新的“单一视图”项目。
  2. 选择了iPhone故事板
  3. 选择了视图控制器
  4. 菜单 - >编辑 - >嵌入 - >导航控制器。
  5. 打开对象浏览器
  6. 在搜索栏中输入“条形按钮项目”
  7. 在导航栏上绘制条形按钮项目。
  8. 完成。看看你是否可以这样做。

    enter image description here