ios开发Swift修改导航栏“返回”按钮文字,图标

项目中常常会使用 UINavigationController 对各个页面进行导航,导航栏左侧的返回按钮默认标题文字是上级页面的title。

但如果上级页面的标题很长,那么这个返回按钮字很多就会很丑:
   开发Swift修改导航栏“返回”按钮文字,图标-swift 导航栏返回按钮">   

 

当文字极其长时返回文字就会变成“back”: 

      

一,要修改“返回按钮”的文字,有如下两种方式:

1,在父页面中设置
将navigationItem.backBarButtonItem设为自定义的UIBarButtonItem
这种方法所有的子界面返回时都变成了我们定义的文字,同时文字前面任然保留返回箭头。

let item = UIBarButtonItem(title: "返回", style: .Plain, target: self, action: nil)
self.navigationItem.backBarButtonItem = item;

 

或者也可以直接把文字设为空字符串,这样就只有一个箭头了。

 

let item = UIBarButtonItem(title: "", style: .Plain, target: self, action: nil)
self.navigationItem.backBarButtonItem = item;

 

2,在子页面中设置
将navigationItem.leftBarButtonItem为自定义的UIBarButtonItem
这种方式可以给各个子页面返回按钮单独设置不同的文字,但文字前面是没有小箭头的。

 

import UIKit
 
class DetailViewController: UIViewController {
 
    override func viewDidLoad() {
        super.viewDidLoad()
         
        let leftBarBtn = UIBarButtonItem(title: "返回", style: .Plain, target: self,
            action: "backToPrevious")
        self.navigationItem.leftBarButtonItem = leftBarBtn
    }
     
    //返回按钮点击响应
    func backToPrevious(){
        self.navigationController?.popViewControllerAnimated(true)
    }
 
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

二,修改“返回按钮”图标 

从上面最后一个例子可以看到,在子页面修改返回按钮的话只有文字没有图片。如果想要使用自定义图片,或者图片文字都需要的话可以进行如下操作:

1,如果只需要图片,不需要文字

比如我们想要用左侧这个图片(back@2x.png)作为返回图标

               

import UIKit
 
class DetailViewController: UIViewController {
 
    override func viewDidLoad() {
        super.viewDidLoad()
         
        let leftBarBtn = UIBarButtonItem(title: "", style: .Plain, target: self,
            action: "backToPrevious")
        leftBarBtn.image = UIImage(named: "back")
         
        //用于消除左边空隙,要不然按钮顶不到最前面
        let spacer = UIBarButtonItem(barButtonSystemItem: .FixedSpace, target: nil, action: nil)
        spacer.width = -10;
         
        self.navigationItem.leftBarButtonItems = [spacer, leftBarBtn]
    }
     
    //返回按钮点击响应
    func backToPrevious(){
        self.navigationController?.popViewControllerAnimated(true)
    }
 
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

2,既需要图片也需要文字

这个时候就要通过创建UIButton来实现了

import UIKit
 
class DetailViewController: UIViewController {
     
    override func viewDidLoad() {
         
        let button =   UIButton(type: .System)
        button.frame = CGRectMake(0, 0, 65, 30)
        button.setImage(UIImage(named:"back"), forState: .Normal)
        button.setTitle("返回", forState: .Normal)
        button.addTarget(self, action: "backToPrevious", forControlEvents: .TouchUpInside)
         
        let leftBarBtn = UIBarButtonItem(customView: button)
         
        //用于消除左边空隙,要不然按钮顶不到最前面
        let spacer = UIBarButtonItem(barButtonSystemItem: .FixedSpace, target: nil, action: nil)
        spacer.width = -10;
         
        self.navigationItem.leftBarButtonItems = [spacer,leftBarBtn]
    }
     
    //返回按钮点击响应
    func backToPrevious(){
        self.navigationController?.popViewControllerAnimated(true)
    }
     
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

时间: 2024-08-03 04:45:13

ios开发Swift修改导航栏“返回”按钮文字,图标的相关文章

ios开发碰到自定义导航栏leftBarButtonItems导致滑动返回失效问题解决方法

通常使用导航控制器 navigationController 跳转到另一页面时,除了可以点击左上角的返回按钮,还可以通过在屏幕左侧向右滑动来返回到上一层.但如果自定义了 self.navigationItem.leftBarButtonItems 后会发现,滑动返回(swipe back)失效了. (如何自定义导航栏左侧按钮可以看这篇文章:Swift - 修改导航栏"返回"按钮文字,图标) 开发碰到自定义导航栏leftBarButtonItems导致滑动返回失效问题解决方法-leftb

iOS如何固定导航栏返回按钮大小

问题描述 iOS如何固定导航栏返回按钮大小 原因:系统返回按钮会随着push之前的controller.title的长度而变长,从而影响当前controller的标题位置 前提:必须使用系统导航栏自带的返回按钮,不要重新self.naigationBarItem.leftItem = XXX 解决方案 可以固定push之前的controller.title的字数,假如你的title需要很长,可以自定义一个label直接加到navigationItem.titleView上, 这样不会改变push

关于iOS导航栏返回按钮问题的解决方法_IOS

最近遇到一个关于导航栏返回按钮的问题,因为之前项目里面都是用的系统默认的返回按钮样式所以没有想过要去更改,后来有需要将返回按钮箭头旁边的文字去掉,同时将该返回按钮的点击事件重新定义.一开始尝试自定义按钮然后设置为leftBarButtonItem,但是这样图片可能跟系统自带的不一样,还有就是返回按钮的位置跟系统自带的不一样.后来找了一些资料,发现将文字去掉比较简单,一般做法是控制器中添加如下代码,然后他的下一级控制就有一个只有箭头没有文字返回按钮: 复制代码 代码如下: UIBarButtonI

IOS 改变导航栏返回按钮的标题

  IOS 改变导航栏返回按钮的标题   下午又找到了一个新的方法 这个方法不错 暂时没有发现异常的地方.    新写的App中需要使用UINavigationController对各个页面进行导航,但由于第一级页面的title较长,在进入第二级页面后返回按钮leftButtonItem的title就会变得很长,对NavigationBar空间占用很大,而且不美观,于是使用代码对leftButtonItem的title文本进行修改,无论是设置self.navigationItem.leftBar

移动应用设计:谈导航栏返回按钮的替代方案

呼,又要夜间上新了.其实自己偶尔还会进去关于Be For Web里面看看将近两年前写的博客开篇语.当时的动力现在仍在,当时爱的那个世界现在仍在爱,并且越来越让我觉得自豪;这让我开心了些.周六晚上有在喝冰啤酒的兄弟姐妹吗,有的话我们虚拟碰个杯吧先,周末愉快=) 前面连续做了13篇iOS7预发布版界面设计规范,这周开始重新回到正常节奏,上一些小文.今次的小话题是关于返回按钮的;其实还少谈了一种越来越普及的替代方案,也就是将返回按钮做到底部标签栏或是工具栏最左侧;当然,准确的说,这种情况下容器本身也不

ios-iOS开发中,NavigationBar的返回按钮的问题

问题描述 iOS开发中,NavigationBar的返回按钮的问题 NavigationBar必须用到NavigationController里面吗?想实现如下图,但是返回按钮完全不出现,求帮助- 解决方案 唉,没人有理想的答案,最后还是用了NavigationController 解决方案二: 将segue的类型设置为Present Modally试试吧. 如图:

求解,iOS中如何实现点击按钮切换按钮背景图,并且通过导航栏返回并再次进入后按钮还是那个背景图

问题描述 求解,iOS中如何实现点击按钮切换按钮背景图,并且通过导航栏返回并再次进入后按钮还是那个背景图 就是想在一个页面做一个收藏的按钮,如果用户点击按钮按钮的背景图就变成已收藏的背景图,并且保存这一状态,在下一次进入页面的时候还是已收藏的状态,求高手指点 解决方案 你这个没有数据交互么? 正常应该是用户点击收藏,然后后台提交,数据库响应成功后在回调里改变一下按钮状态和相应数据. 解决方案二: 你这个背景图片切换的数量多不?如果就2张图片来回切换,可以写个单例,记录下来你的点击状态,根据状态来

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

在iOS7下,默认导航栏背景,颜色是这样的,接下来我们就进行自定义,如果你仅仅是更改一下背景和颜色,代码会很简单,不需要很复杂的自定义View来替代leftBarItem 更改导航栏的背景和文字Color 方法一: [objc] view plaincopy //set NavigationBar 背景颜色&title 颜色   [self.navigationController.navigationBar setBarTintColor:[UIColor colorWithRed:20/25

iOS 自定义状态栏和导航栏详细介绍_IOS

iOS 自定义状态栏和导航栏            开发IOS APP 经常会根据需求更改状态栏和导航栏,这里整理了几种方法,大家可以看下. 导航栏透明 -(void)viewWillAppear:(BOOL)animated { //viewWillAppear中设置透明 [super viewWillAppear:animated]; [self.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetrics