Search code examples
iosswift2uibarbuttonitemback-buttonnavigationbar

Default Back Button Text and Font Setting


By default, Navigation back button text comes as previous screen title or <

I am trying to change that to just <=|

But Its coming as shown in the picture BackButton Image. So, I want to know how to change its font to make big <=| and remove the default <

I tried

Tried the same code in viewDidLoad of first start screen, So i also want to know where to place this code:

override func viewWillAppear(animated: Bool)
{
    self.navigationItem.leftBarButtonItem?.title = "<=|"
    let FntStgVal = [NSFontAttributeName:UIFont.systemFontOfSize(50, weight: UIFontWeightLight)]
    self.navigationItem.leftBarButtonItem?.setTitleTextAttributes(FntStgVal, forState: .Normal)
}

Solution

  • Change your code in viewDidLoad like this.

    class BaseViewController: UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
        }
    
        func setNavigationWithCustomBackButton() {
            let btnLeft:UIButton! = UIButton(frame: CGRectMake(0, 0, 20, 16))
            btnLeft.setTitle("<=|", forState: .Normal)
            btnLeft.titleLabel?.font = UIFont.systemFontOfSize(19, weight: UIFontWeightLight)
            btnLeft!.addTarget(self, action: "handleBack:",forControlEvents: UIControlEvents.TouchUpInside)
            let leftItem:UIBarButtonItem = UIBarButtonItem(customView: btnLeft!)
            self.navigationItem.leftBarButtonItem = leftItem
        }
    
        func handleBack(sender: UIButton) {
            self.navigationController?.popViewControllerAnimated(true)
        }
    }
    

    Now use this BaseViewController as parent of your all viewController and call its method in viewDidLoad like this.

    class ViewController1: BaseViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
            self.setNavigationWithCustomBackButton()
        }
    }
    

    Now it will add custom back button in your NavigationBar.
    Hope this will help you.