Swift修改导航栏按钮的文字和图片的几种方法

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

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.子页面中设置导航栏按钮,自定义的UIBarButtonItem赋值给navigationItem.leftBarButtonItem,这种方式可以给各个子页面返回按钮单独设置不同的文字,但文字前面是没有小箭头的。

override func viewDidLoad() {

super.viewDidLoad()

let leftBarBtn = UIBarButtonItem(title: "返回", style: .plain, target: self,

action: #selector(backToPrevious))

self.navigationItem.leftBarButtonItem = leftBarBtn

}

//返回按钮点击响应

func backToPrevious(){

self.navigationController!.popViewController(animated: true)

}

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

let leftBarBtn = UIBarButtonItem(title: "", style: .plain, target: self,

action: #selector(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!.popViewController(animated: true)

}

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

let button =UIButton(type: .system)

button.frame = CGRect(x:0, y:0, width:65, height:30)

button.setImage(UIImage(named:"back"), for: .normal)

button.setTitle("返回", for: .normal)

button.addTarget(self, action: #selector(backToPrevious), for: .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!.popViewController(animated: true)

}

你可能感兴趣的:(Swift修改导航栏按钮的文字和图片的几种方法)