How to add right button in the navigation bar?

2019-03-19 23:33发布

I have a question to add a right button in navigation bar..

I have two views: View A and View B

I add a navigation bar to view A, after I used self.navigationController!.pushViewController to show view B.

That show a back button in the left of navigation bar of view B automatic, it is good. but now I want to add a button in the right of navigation bar of view B.. I have tried some answers, but it doesn't work... I have tried answers likes : 1) https://www.hackingwithswift.com/example-code/uikit/how-to-add-a-bar-button-to-a-navigation-bar 2)http://blog.apoorvmote.com/add-multiple-bar-button-item-navigation-bar/?lang=fr

Could you help me, thank you !

5条回答
等我变得足够好
2楼-- · 2019-03-19 23:48

Swift code to add a navigation bar button item:

Method 1 (When you wanna use bar button system item)

navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(addTapped))

Method 2 (When you wanna give your own title to button)

navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Add", style: .plain, target: self, action: #selector(addTapped))

From iOS 5 onwards, it allows you to add more than 1 button on either side of a navigation bar. Something like this:

let add = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(addTapped))
let display = UIBarButtonItem(title: "Display", style: .plain, target: self, action: #selector(playTapped))

navigationItem.rightBarButtonItems = [add, display]
查看更多
可以哭但决不认输i
3楼-- · 2019-03-19 23:49

You can add the following code to your B controller's viewDidLoad method.

UIBarButtonItem *rightButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Title" 
                                                                    style:UIBarButtonItemStyleDone 
                                                                    target:self 
                                                                    action:@selector(rightButtonAction:)];
self.navigationItem.rightBarButtonItem = rightButtonItem;
查看更多
Root(大扎)
4楼-- · 2019-03-19 23:58

Add below code in viewDidLoad Method

UIBarButtonItem *flipButton = [[UIBarButtonItem alloc] 
                               initWithTitle:@"Flip"                                            
                               style:UIBarButtonItemStyleBordered 
                               target:self 
                               action:@selector(flipView:)];
self.navigationItem.rightBarButtonItem = flipButton;

This adds a button to the right hand side with the title Flip, which calls the method:

-(IBAction)flipView
查看更多
太酷不给撩
5楼-- · 2019-03-20 00:08

The Swift version of Vahan Babayan's answer, as you seem to use this language, is:

let rightButtonItem = UIBarButtonItem.init(
      title: "Title", 
      style: .Done, 
      target: self, 
      action: "rightButtonAction:"
)

self.navigationItem.rightBarButtonItem = rightButtonItem

The following method will be called on self:

func rightButtonAction(sender: UIBarButtonItem)

Note that all this can be set graphically using a Storyboard, by dragging a Bar Button Item to your Navigation Item and right-clicking to set a target-action.


A small update since Swift 3 and 4 are out: the compiler can now check selector names, preventing typos when setting up target-action programatically. So one should really use:

let rightButtonItem = UIBarButtonItem.init(
      title: "Title", 
      style: .Done, 
      target: self, 
      action: #selector(rightButtonAction(sender:))
)
查看更多
小情绪 Triste *
6楼-- · 2019-03-20 00:09
- (void)viewDidLoad {

    [super viewDidLoad];
    UIBarButtonItem *rightBtn = [[UIBarButtonItem alloc]initWithTitle:@"Right Button" style:UIBarButtonItemStyleDone target:self action:@selector(rightBtnClick)];
    self.navigationItem.rightBarButtonItem = rightBtn;
}

-(void)rightBtnClick{
    // code for right Button

}
查看更多
登录 后发表回答