放4个导航栏按钮

时间:2013-10-29 08:47:05

标签: ios iphone uinavigationbar

我是iOS编程新手,我想知道是否可以将4个条形按钮放入UINavigationBar?我已经尝试了一些我在堆栈溢出时发现但是buttons位置不相等的方法。

这是一个示例截图

enter image description here

我用来编码导航栏的方法是:

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];

我为rightBarButtonItem做了同样的事情,但效果并不好。

任何帮助将不胜感激!谢谢!

4 个答案:

答案 0 :(得分:2)

试试这个:

修改: 它显示正确检查:

enter image description here

拿.h文件:

  UIToolbar *toolBar_T;
  UIBarButtonItem *item1,*item2,*item3,*item4;

拿.m文件:

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];

希望它会有所帮助。

快乐的编码......

答案 1 :(得分:1)

你可以试试像这样的......

-(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];

    }

...如果需要,你也可以添加一个间隔符

bi = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
[buttons addObject:bi];
[bi release];

如果垂直间距有问题,请添加此

- (UIBarPosition)positionForBar:(id <UIBarPositioning>)bar
{
    return UIBarPositionTopAttached;
}

答案 2 :(得分:0)

UINavigationBar 是继承自 UIView,因此您只需添加任何对象。

答案 3 :(得分:0)

尝试以下代码

self.navigationItem.leftBarButtonItems = [NSArray arrayWithObjects:customBarButton, bi, shareBarButton, nil];

self.navigationItem.rightBarButtonItems = [NSArray arrayWithObjects:BUTTON OBJECTS, nil];