24

I have a navigation bar with a left and right button, and I need to put another button next to the right button. Does anyone know how I can go about this? Here is some code to help:

- (id)init {
    self = [super initWithStyle:UITableViewStyleGrouped];
    if (self) {

        _pinArray = [[NSArray alloc]init];
        _pinArray = [Data singleton].annotations;

        UIBarButtonItem *right = [[UIBarButtonItem alloc]initWithTitle:@"Map"
                                                                 style:UIBarButtonItemStylePlain
                                                            target:self
                                                            action:@selector(goToMap:)];
        self.navigationItem.rightBarButtonItem = right;

        UIBarButtonItem *left = [[UIBarButtonItem alloc]initWithTitle:@"Menu"
                                                            style:UIBarButtonItemStylePlain
                                                           target:self
                                                           action:@selector(goToMenu:)];
        self.navigationItem.leftBarButtonItem = left;
        self.navigationItem.title = @"My Homes";
    }
    return self;
}

3 Answers 3

52

It's quite easy :)

https://developer.apple.com/documentation/uikit/uinavigationitem/1624956-rightbarbuttonitems

navigationItem.rightBarButtonItems = [rightA, rightB] // @[rightA, rightB] for ObjC
Sign up to request clarification or add additional context in comments.

4 Comments

Actually there isn't a max. You can add as many as you'd like, even to a detriment lol. But really its as many as you can fit comfortably. Think about your users!
What to do if we want to disable any one of these??
The easiest way is to hold the individual buttons as properties. Then you can simply set enabled = false on each button individually.
Love when things are this easy
6

Instead of using self.navigationItem.rightBarButtonItem, use

self.navigationItem.rightBarButtonItems //note the plural

This allows you to set an array of buttons rather than a single one.

See the UINavigationItem class reference for details.

Comments

2
  let RightBarButton = UIButton()
        RightBarButton.setTitleColor(UIColor.blueColor(), forState: .Normal)
        RightBarButton.frame = CGRectMake(30,0,30,30)
        RightBarButton.setImage(UIImage(named: "search-icon.png"), forState: .Normal)
        RightBarButton.addTarget(self, action: #selector(BaseViewController.OpenQuickLink), forControlEvents: .TouchUpInside)

        let RightBarButton2 = UIButton()
        RightBarButton2.setTitleColor(UIColor.blueColor(), forState: .Normal)
        RightBarButton2.frame = CGRectMake(0,0,30,30)
        RightBarButton2.setImage(UIImage(named: "share-icon.png"), forState: .Normal)
        RightBarButton2.addTarget(self, action: #selector(BaseViewController.Opensharelink), forControlEvents: .TouchUpInside)
        let barButtonItem1 = UIBarButtonItem(customView: RightBarButton2)

        let barButtonItem = UIBarButtonItem(customView: RightBarButton)


navigationItem.rightBarButtonItems = [barButtonItem1, barButtonItem2]

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.