For some reason the label in my navigation bar keeps disappearing and only displaying my map icon and home button. Is it because I'm adding it as a barbuttonitem? Is there a way around this?
UIView *view1=[[UIView alloc]initWithFrame:CGRectMake(160, 5, 250, 70)];
UILabel *l1=[[UILabel alloc]initWithFrame:CGRectMake(0,5, 310, 70)];
l1.text=#"FIND THINGS TO DO";
l1.font=[UIFont fontWithName:#"Helvetica Neue LT Std" size:25.0];
l1.backgroundColor=[UIColor clearColor];
l1.textColor=[UIColor whiteColor];
l1.textAlignment=UITextAlignmentCenter;
[view1 addSubview:l1];
UIBarButtonItem *left2=[[UIBarButtonItem alloc]initWithCustomView:view1];
self.navigationItem.rightBarButtonItem=left2;
[self.navigationItem setHidesBackButton:YES];
self.navigationItem.hidesBackButton=YES;
self.navigationController.navigationBarHidden = NO;
UIImage* image3 = [UIImage imageNamed:#"home_btn.png"];
homeBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, 18, 38, 38)];
[homeBtn setBackgroundImage:image3 forState:UIControlStateNormal];
[homeBtn addTarget:self action:#selector(Home)
forControlEvents:UIControlEventTouchUpInside];
[homeBtn setShowsTouchWhenHighlighted:YES];
UIBarButtonItem *home = [[UIBarButtonItem alloc] initWithCustomView:homeBtn];
NSArray *arr=[[NSArray alloc]initWithObjects:home, nil];
self.navigationItem.rightBarButtonItems = arr;
UIImage* mapButton1 = [UIImage imageNamed:#"Top-Map-Icon.png"];
mapButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 18, 26, 30)];
[mapButton setBackgroundImage:mapButton1 forState:UIControlStateNormal];
[mapButton addTarget:self action:#selector(Map)
forControlEvents:UIControlEventTouchUpInside];
[mapButton setShowsTouchWhenHighlighted:YES];
UIBarButtonItem *map = [[UIBarButtonItem alloc] initWithCustomView:mapButton];
NSArray *arr2 = [[NSArray alloc] initWithObjects:map, nil];
self.navigationItem.leftBarButtonItems = arr2;
Related
i want to ask how i can get the icon of navigationtabbaritem to the left corner (left:0) and right corner (right:0).
my code :
_custombtn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 44, 44)];
_custombtn.backgroundColor = [UIColor redColor];
[_custombtn setBackgroundImage:[UIImage imageNamed:#"ic_msg.png"]forState:UIControlStateNormal];
[_custombtn addTarget:self action:#selector(viewBn:) forControlEvents:UIControlEventTouchUpInside];
self.csbtn = [[UIBarButtonItem alloc]initWithCustomView:_custombtn];
UIButton *aButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
aButton.frame = CGRectMake(0.0, 0.0, 44, 44);
UIBarButtonItem *aBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:aButton];
[aButton addTarget:self action:#selector(rightBarButtonAction:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *spaceFix = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:NULL];
spaceFix.width = -10;
self.navigationItem.rightBarButtonItems = #[spaceFix, aBarButtonItem];
Please add spaceFix for resolve your problem may this help lot
Idea is very simple. I have navigation bar in universal storyboards with custom controls.
UIButton *menu = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 35, 35)];
[menu setImage:[UIImage imageNamed:#"menu"] forState:UIControlStateNormal];
[menu addTarget:self.viewDeckController action:#selector(toggleLeftView) forControlEvents:UIControlEventTouchUpInside];
UIButton *refresh = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 25, 25)];
[refresh setImage:[UIImage imageNamed:#"refresh"] forState:UIControlStateNormal];
[refresh addTarget:self action:#selector(reloadPosts) forControlEvents:UIControlEventTouchUpInside];
UIButton *share = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 25, 25)];
[share setImage:[UIImage imageNamed:#"share"] forState:UIControlStateNormal];
[share addTarget:self action:#selector(showActionView) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *menuBtn = [[UIBarButtonItem alloc] initWithCustomView:menu];
UIBarButtonItem *refreshBtn = [[UIBarButtonItem alloc] initWithCustomView:refresh];
UIBarButtonItem *shareBtn = [[UIBarButtonItem alloc] initWithCustomView:share];
UIBarButtonItem *negativeSpacerLeft = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
[negativeSpacerLeft setWidth:-10];
UIBarButtonItem *negativeSpacerRight = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
[negativeSpacerRight setWidth:-10];
self.navigationItem.leftBarButtonItems = [NSArray arrayWithObjects:negativeSpacerLeft, menuBtn, nil];
self.navigationItem.rightBarButtonItems = [NSArray arrayWithObjects:negativeSpacerRight, shareBtn, refreshBtn, nil];
Everything works correctly - navigation bar has implemented style and buttons/icons. But there is a problem with iPad and iOS 8 (works on iOS7). When I tap on any button, it does not respond. What I did wrong? It works as well on iPhone with iOS 7/8.
I have tried almost all answers here, How to remove the blank space between the two uibarbuttons shown below the code i use is
UIButton *backBTN= [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];
[backBTN addTarget:self action:#selector(backACT:) forControlEvents:UIControlEventTouchUpInside];
[backBTN setBackgroundImage:[UIImage imageNamed:#"menu_icon.png"] forState:UIControlStateNormal];
UIBarButtonItem *backkb = [[UIBarButtonItem alloc] initWithCustomView:backBTN];
// self.navigationItem.leftBarButtonItem = backkb;
UIButton *homeBTN= [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];
[homeBTN addTarget:self action:#selector(homeACT:) forControlEvents:UIControlEventTouchUpInside];
[homeBTN setBackgroundImage:[UIImage imageNamed:#"logout_btn.png"] forState:UIControlStateNormal];
UIBarButtonItem *btnhome = [[UIBarButtonItem alloc] initWithCustomView:homeBTN];
// btnhome.imageInsets = UIEdgeInsetsMake(-10, 0, 0, 0);
[self.navigationItem setLeftBarButtonItems:[NSArray arrayWithObjects: backkb, btnhome, nil]];
self.navigationItem.hidesBackButton = YES;
Try this,
// Create a UIView to add both buttons
UIView *leftView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 60, 30)];
UIButton *backBTN= [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];
[backBTN addTarget:self action:#selector(backACT:) forControlEvents:UIControlEventTouchUpInside];
[backBTN setBackgroundImage:[UIImage imageNamed:#"menu_icon.png"] forState:UIControlStateNormal];
//Add button to UIView
[leftView addSubview:backBTN];
UIButton *homeBTN= [[UIButton alloc] initWithFrame:CGRectMake(30, 0, 30, 30)];
[homeBTN addTarget:self action:#selector(homeACT:) forControlEvents:UIControlEventTouchUpInside];
[homeBTN setBackgroundImage:[UIImage imageNamed:#"logout_btn.png"] forState:UIControlStateNormal];
//Add button to UIView
[leftView addSubview:homeBTN];
//Set UIView as CustomView for bar button
UIBarButtonItem *leftBarButton = [[UIBarButtonItem alloc] initWithCustomView:leftView];
[self.navigationItem setLeftBarButtonItems:[NSArray arrayWithObjects: leftBarButton, nil]];
self.navigationItem.hidesBackButton = YES;
I have tried this and got output as
used some background colour to know the borders
I want add three buttons to rightBarButtonItem , but it just display two.
I also try to add a UIView(buttons in the view) to self.view ,but its below the navigation.
Something Like this:
UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd
target:self
action:#selector(addButton:)];
UIBarButtonItem *searchButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSearch
target:self
action:#selector(showAllButton:)];
UIBarButtonItem *searchButton2 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSearch
target:self
action:#selector(showAllButton:)];
self.navigationItem.rightBarButtonItems = #[searchButton, addButton, searchButton2];
YourViewontroller.h
UIView *view_navigation;
viewcontroller.m
- (void)viewDidLoad
{
view_navigation = [[UIView alloc]initWithFrame:CGRectMake(200, 5, 100, 40)];
view_navigation.backgroundColor = [UIColor clearColor];
UIButton *add_button = [UIButton buttonWithType:UIButtonTypeCustom];
[add_button setBackgroundImage:[UIImage imageNamed:#"Add-icon.png"] forState:UIControlStateNormal];
[add_button addTarget:self action:#selector(Add_Student:) forControlEvents:UIControlEventTouchUpInside];
[add_button.imageView setContentMode:UIViewContentModeScaleToFill];
[add_button setFrame:CGRectMake(0, 8, 25, 25)];
[view_navigation addSubview:add_button];
UIButton *Remove_button = [UIButton buttonWithType:UIButtonTypeCustom];
[Remove_button setBackgroundImage:[UIImage imageNamed:#"Delete_icon.jpeg"] forState:UIControlStateNormal];
[Remove_button addTarget:self action:#selector(Remove_Student:) forControlEvents:UIControlEventTouchUpInside];
[Remove_button.imageView setContentMode:UIViewContentModeScaleToFill];
[Remove_button setFrame:CGRectMake(40, 8, 25, 25)];
[view_navigation addSubview:Remove_button];
UIButton *Edit_button = [UIButton buttonWithType:UIButtonTypeCustom];
[Edit_button setBackgroundImage:[UIImage imageNamed:#"Edit_icon.jpeg"] forState:UIControlStateNormal];
[Edit_button addTarget:self action:#selector(Edit_Student:) forControlEvents:UIControlEventTouchUpInside];
[Edit_button.imageView setContentMode:UIViewContentModeScaleToFill];
[Edit_button setFrame:CGRectMake(80, 8, 25, 25)];
[view_navigation addSubview:Edit_button];
[self.navigationController.navigationBar addSubview:view_navigation];
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
}
- (void)viewWillDisappear:(BOOL)animated
{
[view_navigation removeFromSuperview];
[super viewWillDisappear:animated];
}
i am new to iOS programming and i am wondering if it is possible to put 4 bar buttons into the UINavigationBar? I have tried a few methods that i have found on stack overflow but the buttons positions are not equal.
Here is a sample screenshot
.
The method that i used to code my navigation bar is:
UIToolBar *tools = [[UIToolBar alloc] initWithFrame:CGRectMake(0, 0, 100, 50)];
UIImage *backImage = [UIImage imagedName:#"backIcon.png"];
UIImage *shareImage = [UIImage imagedName:#"shareIcon.png"];
UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
[backButton setImage:backImage forState:UIControlStateNormal];
// create the button and assign the image to the leftsidebutton
UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
[backButton setImage:backImage forState:UIControlStateNormal];
backButton.frame = CGRectMake(0, 0, backImage.size.width, backImage.size.height);
[backButton addTarget:self.navigationController action:#selector(popViewControllerAnimated:) forControlEvents:UIControlEventTouchUpInside];
UIButton *shareButton = [UIButton buttonWithType:UIButtonTypeCustom];
[shareButton setImage:shareImage forState:UIControlStateNormal];
shareButton.frame = CGRectMake(0, 0, shareImage.size.width, shareImage.size.height);
//create space between the buttons
UIBarButtonItem *bi = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:NULL];
UIBarButtonItem *customBarButton = [[UIBarButtonItem alloc] initWithCustomView:backButton];
UIBarButtonItem *shareBarButton = [[UIBarButtonItem alloc] initWithCustomView:shareButton];
self.navigationItem.hidesBackButton = YES;
NSArray *leftActionButtonItems = #[customBarButton, bi, shareBarButton];
[tools setItems:leftActionButtonItems animated:NO];
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:tools];
I did the same for rightBarButtonItem but it is not working so well.
Any help will be greatly appreciated! Thanks!
Try this one :
Edit :
it display Proper check it :
take .h file :
UIToolbar *toolBar_T;
UIBarButtonItem *item1,*item2,*item3,*item4;
take .m file :
toolBar_T=[[UIToolbar alloc] init];
toolBar_T.frame=CGRectMake(0,5,168, 44);
[self.view addSubview:toolBar_T];
UIButton *button0 = [UIButton buttonWithType:UIButtonTypeCustom];
[button0 setImage:[UIImage imageNamed:#"1.png"] forState:UIControlStateNormal];
[button0 addTarget:self action:#selector(button0:) forControlEvents:UIControlEventTouchUpInside];
button0.frame = CGRectMake(0, 7, 35,29);
item1 = [[UIBarButtonItem alloc] initWithCustomView:button0];
UIButton *button1 = [UIButton buttonWithType:UIButtonTypeCustom];
[button1 setImage:[UIImage imageNamed:#"2.png"] forState:UIControlStateNormal];
[button1 addTarget:self action:#selector(button1:) forControlEvents:UIControlEventTouchUpInside];
button1.frame = CGRectMake(0, 7, 35,29));
item2 = [[UIBarButtonItem alloc] initWithCustomView:button1];
UIButton *button2 = [UIButton buttonWithType:UIButtonTypeCustom];
[button2 setImage:[UIImage imageNamed:#"3.png"] forState:UIControlStateNormal];
[button2 addTarget:self action:#selector(button2:) forControlEvents:UIControlEventTouchUpInside];
button2.frame = CGRectMake(0, 7, 35,29);
item3 = [[UIBarButtonItem alloc] initWithCustomView:button2];
UIButton *button3 = [UIButton buttonWithType:UIButtonTypeCustom];
[button3 setImage:[UIImage imageNamed:#"4.png"] forState:UIControlStateNormal];
[button3 addTarget:self action:#selector(button3:) forControlEvents:UIControlEventTouchUpInside];
button3.frame = CGRectMake(0, 7, 35,29);
item4 = [[UIBarButtonItem alloc] initWithCustomView:butto3];
NSArray *buttons = [NSArray arrayWithObjects: item1, item2,item3, nil];
[toolBar_T setItems: buttons animated:NO];
toolBar_T.barStyle=-1;// For Clear backgroud
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:toolBar_T];
Hope it will help.
Happy coding...
You can try smth like this...
-(void)setupToolbarButtons:(UIViewController *)navC
{
//create a toolbar in the right
UIToolbar *tools = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 135, 44.01)];
tools.delegate = self;
tools.barTintColor = [UIColor clearColor];
//create the array to hold the buttons, which then gets added to the toolbar
NSMutableArray *buttons = [[NSMutableArray alloc] initWithCapacity:4];
//create a standart 'play' button
UIBarButtonItem *bi = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemPlay target:self action:nil];
[buttons addObject:bi];
[bi release];
//create a standart 'stop' button
bi = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemStop target:self action:nil];
[buttons addObject:bi];
[bi release];
//create a standart 'fast forward' button
bi = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFastForward target:self action:nil];
[buttons addObject:bi];
[bi release];
//create a standart 'pause' button
bi = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemPause target:self action:nil];
[buttons addObject:bi];
[bi release];
//stick the buttons in the toolbar
[tools setItems:buttons animated:NO];
[buttons release];
//and put the toolbar in the nav bar
navC.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:tools];
[tools release];
}
...also you can add a spacer if it's needed
bi = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
[buttons addObject:bi];
[bi release];
and if something is wrong in vertical spacing, then add this
- (UIBarPosition)positionForBar:(id <UIBarPositioning>)bar
{
return UIBarPositionTopAttached;
}
UINavigationBar is Inherits from UIView, so you can simply add any object in.
Try the following code
self.navigationItem.leftBarButtonItems = [NSArray arrayWithObjects:customBarButton, bi, shareBarButton, nil];
self.navigationItem.rightBarButtonItems = [NSArray arrayWithObjects:BUTTON OBJECTS, nil];