2013-10-29 38 views
0

我是新來的iOS編程,我想知道是否有可能把4條按鈕放入UINavigationBar?我已經嘗試了一些我在棧溢出中發現的方法,但是buttons的位置並不相同。把4個導航欄按鈕

下面是一個樣本屏幕截圖

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,但它不工作這麼好。

任何幫助將不勝感激!謝謝!

回答

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

希望這將有助於。

快樂編碼...

+0

嗨Dhaval,你的代碼有效,但按鈕放在一起太緊密了。 – user2909432

+0

@ user2909432檢查我的編輯答案,並根據需要設置CGRectMake按鈕,工具欄。 –

0

UINavigationBar是繼承UIView,所以你可以簡單地添加任何對象

+0

這意味着,而不是把它放到導航欄中,我把圖像放入UIView? – user2909432

0

試試下面的代碼

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

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

嗨vaisakh,有一個警告,當我嘗試了這種方法,不兼容的指針類型分配給'UIBarButtonItem *'從'NSArray *' – user2909432

+0

其工作對我來說...無論如何嘗試此鏈接http://stackoverflow.com/questions/2413126/how-to-add-multiple-buttons-to-a-navigationbar?tab = votes – Vaisakh

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