定制导航栏的返回按钮

原创 2012年03月22日 10:19:03

导航栏自带一个返回按钮,我们需要定制它的样式,这可以有许多办法。比如 Hack 导航栏的视图层次。如果你不想 Hack 导航栏,那么你可以使用NavigationBarDelegate。问题在于,如果是导航控制器自带的NavigationBar,你将不能访问NavigationBar(程序会Crash)。这是苹果文档中的说明:

Note that if you use aUINavigationController object to manage hierarchical navigation, you should notdirectly access the navigation bar object.

这里,我们提供另一种“定制”方法。也许不能称之为定制,因为我们实际上是将默认的返回按钮隐藏了,并提供一个自定义的返回按钮作为导航栏的leftButton。使用这种方法,我们不仅可以定制按钮的样式(标题和背景图片),而且可以触发自定义的方法。默认的返回按钮动作是popViewController,我们可以修改为其他动作。

这个过程大概分为4个步骤:

1、隐藏默认返回按钮,这是通过设置navigationItem的hidesBackButton为YES做到的:

// 隐藏默认的"返回"按钮

[self.navigationItemsetHidesBackButton:YES];

 

2、自定义一个BarButtonItem。首先,我们定制一个UIButton。 这个UIButton用buttonWithType:UIButtonTypeCustom方法初始化。然后用setBarckgroundImage方法定制按钮的背景图片,用addTarget方法指定按钮的事件处理方法。这样我们就获得了一个完全定制的Button。BarButtonItem有一个initWithCustomView:的初始化方法。我们可以把一个定制的视图(比如我们定制的Button)作为这个方法的参数,构建出一个BarButtonItem。

 

// 自定义导航栏的"返回"按钮

    UIButton *btn = [UIButtonbuttonWithType:UIButtonTypeCustom];

btn.frame = CGRectMake(15, 5, 38, 38);

[btn setBackgroundImage:[UIImageimageNamed:@"按钮-返回1.png"] forState:UIControlStateNormal];

[btn addTarget: selfaction: @selector(goBackAction) forControlEvents: UIControlEventTouchUpInside];

    UIBarButtonItem*back=[[UIBarButtonItemalloc]initWithCustomView:btn];

 

3、把BarButtonItem 设置为 navigationItem的leftBarButton。

 

// 设置导航栏的leftButton

self.navigationItem.leftBarButtonItem=back;

   

4、编写Button的事件代码。

-(void)goBackAction{

// 在这里增加返回按钮的自定义动作

[self.navigationControllerpopViewControllerAnimated:YES];

}

 


自定义iOS7导航栏背景,标题和返回按钮文字颜色

在iOS7下,默认导航栏背景,颜色是这样的,接下来我们就进行自定义,如果你仅仅是更改一下背景和颜色,代码会很简单,不需要很复杂的自定义View来替代leftBarItem 更改导航栏...
  • mad1989
  • mad1989
  • 2014年11月26日 16:22
  • 188355

iOS 自定义导航栏背景,左侧按钮,右侧按钮,及标题

一:导航栏的背景颜色如何设置 控制器是UINavigationController[self.navigationBar setBackgroundImage:[UIImage imageNamed...
  • TechAlleyBoy
  • TechAlleyBoy
  • 2017年04月01日 15:15
  • 7568

微信小程序没有返回按钮

刚接触小程序,发现页面跳转后左上角没有返回按钮,以为要通过函数设置,找文档却没发现,后来发现是跳转方式为“在当前页面打开”就不会有左上角的返回按钮 跳转到新页面 在当前页打开 实现页面跳...
  • qq_37788558
  • qq_37788558
  • 2017年11月06日 17:43
  • 1608

小程序制作回到顶部按钮

我们先看一下效果吧,直接上图。第一种情况,当页面在顶部的时候,回到顶部按钮是不会出现的。第二种情况,当页面在离开顶部一定距离的时候,回到顶部按钮出现接下就是对代码的分析了: 在这里我们如果要...
  • qq_24147051
  • qq_24147051
  • 2017年01月08日 14:12
  • 7282

如何自定义左上角的返回按钮

效果图: 代码如下: //左上方返回图标     UIImage * backImage = [[UIImage imageNamed:@"btn_nav_back.png"]i...
  • u011189158
  • u011189158
  • 2015年04月08日 11:40
  • 2989

微信小程序返回功能

微信小程序返回功能
  • yiyingcsdn
  • yiyingcsdn
  • 2017年05月09日 15:04
  • 4767

ios之自定义导航栏背景,标题和返回按钮文字颜色

在iOS7下,默认导航栏背景,颜色是这样的,接下来我们就进行自定义,如果你仅仅是更改一下背景和颜色,代码会很简单,不需要很复杂的自定义View来替代leftBarItem 更...
  • LVXIANGAN
  • LVXIANGAN
  • 2015年11月28日 23:48
  • 2736

Swift自定义导航栏返回按钮

如何去除swift系统自带的导航栏返回按钮?可以自定义返回按钮在swift中,怎么替换系统自带的导航栏返回按钮?比如说我要替换成一张返回按钮图片,点击返回到上一页首先,看一下系统自带的导航栏返回按钮的...
  • Mango_ios
  • Mango_ios
  • 2017年04月13日 10:54
  • 2117

IOS 之iIOS11更新 导航返回按钮偏移的问题。。。。。

iOS 11导航返回按钮偏移的问题: 1、MJ刷新异常,上拉加载出现跳动刷新问题: 解决办法:初始化的时候增加以下代码(tableView和collectionView类似)     if ...
  • u011146511
  • u011146511
  • 2017年10月10日 12:32
  • 3820

定制iOS 7中的导航栏和状态栏(主要是自定义的返回按钮)

转自:http://blog.csdn.net/ralbatr/article/details/22416201 注:本文译自Customizing Navigation B...
  • niejiafa_131
  • niejiafa_131
  • 2015年04月16日 10:43
  • 583
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:定制导航栏的返回按钮
举报原因:
原因补充:

(最多只允许输入30个字)