Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to replace/customize back button image in storyboard navigationcontroller

I want to replace the text in the back button with a custom image. How can I do that in swift code? I don't want to replace the entire backbarbutton since I'd like to keep the default action behaviour of going back to the last view. I would also like to do a switch statement based on where the back destination(based on storyboardId) is so that I can show different images based on the view.

this replaces the image but it wipes out the default back button behavior, and I need to discrimante on what the back destination is so that I can show the right back image.

self.navigationItem.leftBarButtonItem = 
 UIBarButtonItem(image:StyleKit.imageOfMap, style:.Plain, target:self, action:nil);
like image 466
MonkeyBonkey Avatar asked Feb 09 '15 23:02

MonkeyBonkey


1 Answers

Try changing your leftBarButtonItem:

self.navigationItem.leftBarButtonItem = 
    UIBarButtonItem(image:StyleKit.imageOfMap, style:.Plain, target:self, action:nil);

to a backBarButtonItem:

self.navigationItem.backBarButtonItem = 
    UIBarButtonItem(image:StyleKit.imageOfMap, style:.Plain, target:self, action:nil);

in order to take advantage of backBarButtonItem's default action.

And put that line of code in the view controller preceding the one you'd like your custom back button to appear in.

Edit: If you don't want the "<" symbol to appear on your button, you'll have to in fact use a leftBarButtonItem then dismiss the view controller in a separate method, ex:

    self.navigationItem.leftBarButtonItem = 
        UIBarButtonItem(image:StyleKit.imageOfMap, style:.Plain, target:self, action:"backButtonPressed:");

}

func backButtonPressed(sender:UIButton) {
    navigationController?.popViewControllerAnimated(true)
}
like image 140
Lyndsey Scott Avatar answered Oct 22 '22 22:10

Lyndsey Scott