如何在navigationcontroller中间设置个按钮

 我来答
huanglenzhi
推荐于2016-05-05 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
采纳数:117538 获赞数:517171
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。

向TA提问 私信TA
展开全部
  一、UINavigationcontroller自带的navigationBar 是无法添加左箭头的返回按钮的

  在网上搜索了一下 但是真的有方法可以添加成功,但是前提是该 navigationBar不是NavigationController自带的。

  如果是自带的navigationBar就无法添加成功,会出现

  

  [csharp] view
plaincopy

  Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Cannot call setItems:animated: directly on a UINavigationBar managed by a controller.'

这样的错误,意思就是“ 苹果不允许 直接对受一个Controller控制的naviBar 进行 setItems操作”,
仔细一查,真的有这样的规定

  

  "The navigation bar managed by the controller. Pushing, popping or setting
navigation items on a managed navigation bar is not supported."

  意思很明确了: 这个naviBar是受controller管理的,不支持Pushing, popping or setting navigation
items操作。

  看到这儿,我也很无语了,所以只好自己切图了,切出左箭头的样式来添加leftBarButtonItem 了。

  

  二、单独的UINavigationBar添加左箭头的返回按钮

  但是还是贴出来,单独的一个NavigationBar怎么添加 左箭头的返回按钮代码,这段代码想必看了很多次了吧,哈哈,不厌其烦的在贴一遍好了

  

  [csharp] view
plaincopy

  UINavigationItem *navigationItem = [[UINavigationItem alloc] initWithTitle:@""];

  [self.naviBar pushNavigationItem:navigationItem animated:NO];

  self.naviBar.delegate = self;

  //创建一个右边按钮

  UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:@"右边"

  style:UIBarButtonItemStyleDone

  target:self

  action:@selector(clickRightButton)];

  [navigationItem setRightBarButtonItem:rightButton];

  [navigationItem setTitle:@"我的页面"];

  UINavigationItem *item = [self.naviBar.items objectAtIndex:0];

  [self.naviBar pushNavigationItem:item animated:YES];

  UINavigationItem *back = [[UINavigationItem alloc] initWithTitle:@"Back"];

  NSArray *items = [[NSArray alloc] initWithObjects:back,item,nil];

  [self.naviBar setItems:items animated:NO];

  

  

  如何捕获左箭头返回按钮的事件呢? 你需要去实现 UINavigationBarDelegate 协议里面的方法。

  

  [csharp] view
plaincopy

  - (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem *)item

  {

  //在此处添加点击back按钮之后的操作代码

  NSLog(@"aaaaaaaaaaaaa");

  return FALSE;

  }
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式