I have add both back button and title in Navigation bar button item. I have made dynamic function for using both.
this code for back button, it will return UIBarButtonItem item.
func getBackButton(selector: Selector, target: Any) -> UIBarButtonItem {
let button = UIButton(type: .custom)
button.setImage(UIImage(named: "img_back_white"), for: .normal)
button.setImage(UIImage(named: "img_back_white"), for: .highlighted)
button.setImage(UIImage(named: "img_back_white"), for: .selected)
button.imageView?.contentMode = .scaleAspectFit
button.imageEdgeInsets = UIEdgeInsets(top: 0, left: -15, bottom: 0, right: 0)
button.frame = CGRect(x: 0, y: 0, width: 30, height: 30)
//button.imageEdgeInsets = UIEdgeInsets(top: 0.0, left: 0, bottom: 0, right: 0)
button.backgroundColor = .clear
button.addTarget(target, action: selector, for: .touchUpInside)
return UIBarButtonItem(customView: button)
}
Now for add title beside back button
func getNavigationTitleButton(title: String, font: UIFont = UIFont.SFProDisplayRegular(size: 19)) -> UIBarButtonItem {
let navTitle = UILabel()
navTitle.text = title
navTitle.textColor = .AppWhite
navTitle.isEnabled = true
navTitle.font = font
//navTitle.backgroundColor = .red
//navTitle.frame.origin.x = -40
//navTitle.sizeToFit()
return UIBarButtonItem(customView: navTitle)
}
You can customize according your need. I want to add one more method if you want to show both in some screen directly so use this method with title and selector parameter.
func addBackWithTitle(title: String, selector: Selector) {
self.navigationItem.leftBarButtonItems = [self.getBackButton(selector: selector, target: self), self.getNavigationTitleButton(title: title)]
}