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)
}