Create a custom left back button on UINavigationBar WITH the standard arrow on the left

后端 未结 6 1596
情书的邮戳
情书的邮戳 2021-02-05 03:27

When I create a custom back button, I use the following code:

    UIBarButtonItem *leftButton = [[UIBarButtonItem alloc]initWithTitle:@\"Yeah\" style:UIBarButton         


        
6条回答
  •  情书的邮戳
    2021-02-05 04:12

    Finally, here's the snippet I use to define the back button's title with the standard left arrow in the current view, not in the parent view :

    - (void)viewDidLoad {
        [super viewDidLoad];
    
        [self setTitle:@"Current View"];
    
        // Get the previous view controller
        UIViewController *previousVC = [self.navigationController.viewControllers objectAtIndex:self.navigationController.viewControllers.count - 2];
    
        // Create a UIBarButtonItem
        UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"FooBar" style:UIBarButtonItemStyleBordered target:self action:@selector(yourSelector)];
    
        // Associate the barButtonItem to the previous view
        [previousVC.navigationItem setBackBarButtonItem:barButtonItem];
    }
    

    Here's the result :

    enter image description here

    Note : However, since it's not possible to add an action on a backBarButtonItem, you can refer to this great post if you want it to.

    Updated for Swift

    // Prev - no chevron...
    //navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Back !", style: .plain, target: self, action: #selector(backPressed))
    
    // adds the chevron
    let vc = navigationController?.viewControllers.first
    let button = UIBarButtonItem(title: "Go Back", style: .plain, target: self, action: #selector(backPressed))
    vc?.navigationItem.backBarButtonItem = button
    

提交回复
热议问题