UINavigationItem: add another button

enter image description here

How to add a new button in navigationItem? Let's say I need to add it next to the right button.

The code used for left right.

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:_cancelButton]; self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:_shareButton]; 

How to add another button?

+3
source share
5 answers

There are different approaches to adding more than one button on the right side of the navigation controller. One way to simplist is given below.

  UIView *buttonView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 44)]; UIButton *exampleButton1 = [UIButton buttonWithType:UIButtonTypeCustom]; exampleButton1.frame = CGRectMake(0, 2, 30, 40); [exampleButton1 addTarget:self action:@selector(FirstMethod) forControlEvents:UIControlEventTouchUpInside]; [exampleButton1 setImage:[UIImage imageNamed:@"image1.png"] forState:UIControlStateNormal]; [buttonView addSubview:exampleButton1]; UIButton *exampleButton2 = [UIButton buttonWithType:UIButtonTypeCustom]; exampleButton2.frame = CGRectMake(70, 2, 30, 40); [exampleButton2 addTarget:self action:@selector(Second method) forControlEvents:UIControlEventTouchUpInside]; [exampleButton2 setImage:[UIImage imageNamed:@"image2.png"] forState:UIControlStateNormal]; [buttonView addSubview:exampleButton2]; self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:buttonView]; 

Hope this will be helpful for you. thanks

+4
source

you can add more buttons

 self.navigationItem.leftBarButtonItems = [NSArray arrayWithObjects:uibarbuttonInstance1, uibarbuttonInstance2, nil]; 

for right buttons

 self.navigationItem.rightBarButtonItems = [NSArray arrayWithObjects:uibarbuttonInstance1, uibarbuttonInstance2, nil]; 
+4
source

Middle button

 UIButton *btnShow = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, 34, 34)]; btnShow.backgroundColor = [UIColor colorWithWhite:0.411 alpha:1.000]; [btnShow setImage:[UIImage imageNamed:@"btn_back.png"] forState:UIControlStateNormal]; [btnShow setImage:[UIImage imageNamed:@"btn_back.png"] forState:UIControlStateHighlighted]; self.navigationItem.titleView = btnShow; 

Right bar button

  UIButton *tempButton1 = [UIButton buttonWithType:UIButtonTypeCustom]; [tempButton1 setFrame:CGRectMake(0, 0, 34, 34)]; tempButton1.tag = 0; [tempButton1 addTarget:self action:@selector(btnBackClicked:) forControlEvents:UIControlEventTouchUpInside]; [tempButton1 setImage:[UIImage imageNamed:@"btn_back.png"] forState:UIControlStateNormal]; [tempButton1 setImage:[UIImage imageNamed:@"btn_back.png"] forState:UIControlStateHighlighted]; [self.navigationItem setRightBarButtonItem:[[UIBarButtonItem alloc] initWithCustomView:tempButton1]]; 

Left button

 UIButton *tempButton = [UIButton buttonWithType:UIButtonTypeCustom]; [tempButton setFrame:CGRectMake(0, 0, 34, 34)]; [tempButton addTarget:self action:@selector(btnBackClicked:) forControlEvents:UIControlEventTouchUpInside]; [tempButton setImage:[UIImage imageNamed:@"btn_back.png"] forState:UIControlStateNormal]; [tempButton setImage:[UIImage imageNamed:@"btn_back.png"] forState:UIControlStateHighlighted]; [self.navigationItem setLeftBarButtonItem:[[UIBarButtonItem alloc] initWithCustomView:tempButton] 

Output

enter image description here

+2
source
 NSArray *tempArray2= [[NSArray alloc] initWithObjects:self.shareBtn,self.gameCenterBtn,nil]; self.navigationItem.leftBarButtonItems=tempArray2; 
+1
source

Try it. It worked for me.

 UIBarButtonItem *flex = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil]; flex.width = 20; UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; [btn setFrame:CGRectMake(0, 0, 40, 30)]; [btn setImage:[UIImage imageNamed:@"mac-gray.png"] forState:UIControlStateNormal]; UIBarButtonItem *bar1 = [[UIBarButtonItem alloc]initWithCustomView:btn]; UIButton *btn2 = [UIButton buttonWithType:UIButtonTypeCustom]; [btn2 setFrame:CGRectMake(0, 0, 40, 30)]; [btn2 setImage:[UIImage imageNamed:@"mac-gray.png"] forState:UIControlStateNormal]; UIBarButtonItem *bar2 = [[UIBarButtonItem alloc]initWithCustomView:btn2]; self.navigationItem.rightBarButtonItems = [NSArray arrayWithObjects:bar1,flex,bar2, nil]; 
+1
source

Source: https://habr.com/ru/post/1479771/


All Articles