How to change the title of the "back" bar button item?

10,960

Solution 1

Try to override previous screen segue

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    let backItem = UIBarButtonItem()
    backItem.title = "My title"
    navigationItem.backBarButtonItem = backItem
}

Solution 2

You can also change it from storyboard by changing the back button property in the navigation item of the previous view controller as follows:

enter image description here

Solution 3

In child view this worked for me;

self.navigationController!.navigationBar.topItem!.title = "Back"

Share:
10,960
Swift Everyday
Author by

Swift Everyday

Updated on June 16, 2022

Comments

  • Swift Everyday
    Swift Everyday almost 2 years

    I want to change the "Root View Controller" back button to "Back" without changing the title of the Root View Controller.

    I have tried these 3 code but all of them do not work.

    navigationItem.backBarButtonItem?.title = "Back"
    navigationItem.leftBarButtonItem?.title = "Back"
    navigationItem.backBarButtonItem?.title = "Back"
    

    May I know what am I doing wrong? Thanks in advance.

    Screenshot

    Here is the code of the whole method for your reference:

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    
        navigationItem.backBarButtonItem?.title = "Back"
        navigationItem.leftBarButtonItem?.title = "Back"
    
        manager = CLLocationManager()
        manager.delegate = self
        manager.desiredAccuracy = kCLLocationAccuracyBest
    
        if activePlace == -1
        {
            manager.requestWhenInUseAuthorization()
            manager.startUpdatingLocation()
        }
        else
        {
           // print( "String(myvar3.dynamicType) -> \(places[activePlace]["lat"].dynamicType)")
            let latitude = Double(places[activePlace]["lat"]!)
            let longitude = Double(places[activePlace]["lon"]!)
    
            //creating map region and annotation
            createMapRegionAndAnnotation(latitude!, longitude: longitude!)
    
            print(latitude)
        }
    
  • Swift Everyday
    Swift Everyday over 8 years
    Hi may I know why does this not work?navigationItem.backBarButtonItem?.title = "Button" Thank you for your help
  • Oleg Gordiichuk
    Oleg Gordiichuk over 8 years
    @TeeMingWei If you are setting the back button for the current view controller's navigation item you are not setting the button that get's displayed in the current view. You are in fact setting the back button that will be used if you push another view controller from it.
  • Swift Everyday
    Swift Everyday over 8 years
    Thanks for your help. I just tried it out and it works too
  • Gargo
    Gargo about 5 years
    1)doesn't work at all; 2)overriding prepareForSegue without of calling super.prepareForSegue is incorrect
  • Gargo
    Gargo about 5 years
    it overwrites the title of the previous screen