I am using storyboards in my application, and if I set the title property of a ViewController class, that string will appear as the text of my back button when I push a SecondViewController, how can I change this?, I want to put a different title for the back button.
I have used this but it doesn't work:
UIBarButtonItem *btnBack = [[UIBarButtonItem alloc]
initWithTitle:@"Back"
style:UIBarButtonItemStyleBordered
target:self
action:nil];
[self.navigationItem setBackBarButtonItem: btnBack];
please help me
Try this ,
Objective-C:
UIBarButtonItem *btnBack = [[UIBarButtonItem alloc]
initWithTitle:@"Done"
style:UIBarButtonItemStyleBordered
target:self
action:nil];
self.navigationController.navigationBar.topItem.backBarButtonItem=btnBack;
Swift:
var btn = UIBarButtonItem(title: "Done", style: .Plain, target: self, action: "backBtnClicked")
self.navigationController?.navigationBar.topItem?.backBarButtonItem=btn
When you use Storyboards you can change the text of the left bar button item aka the back button with no code. You will obviously need a UINavigationController
within your Storyboard so you have the ability to push and pop views.
- Select the Navigation item object for the source view controller
- Enter text into the Back Button option in the inspector view on the right.
Then when a view is pushed from this view it will use this title set.
Set a backBarButtonItem to the navigationItem of the previous viewController. Setting the topItem only works on the first time viewWillAppear. Please check this post for detail: iOS Set Navigation Bar Back Button Title
NSArray *viewControllerArray = [self.navigationController viewControllers];
// get index of the previous ViewContoller
long previousIndex = [viewControllerArray indexOfObject:self] - 1;
if (previousIndex >= 0) {
UIViewController *previous = [viewControllerArray objectAtIndex:previousIndex];
previous.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc]
initWithTitle:backButtonTitle
style:UIBarButtonItemStylePlain
target:self
action:nil];
}
Try changing the title of the first view controller where you push the second view controller, and set the tittle to the old one when u pop.
Try this:
UIBarButtonItem *btnBack = [[UIBarButtonItem alloc]
initWithTitle:@"Back"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(backButtonClicked:)];
[self.navigationItem setLeftBarButtonItem: btnBack];
-(void)backButtonClicked:(UIBarButtonItem*)sender
{
//do ur stuff
}