简体   繁体   中英

set title of back bar button item in ios

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.

  1. Select the Navigation item object for the source view controller
  2. 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 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
     }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM