2011-02-24 28 views

cevap

48

Sen UIToolbar kullanabilir ve düğmelerle çubuğunu ayarlamanız gerekir:

// create a toolbar where we can place some buttons 
UIToolbar *toolbar = [[UIToolbar alloc] 
         initWithFrame:CGRectMake(0, 0, 100, 45)]; 
[toolbar setBarStyle: UIBarStyleBlackOpaque]; 

// create an array for the buttons 
NSMutableArray *buttons = [[NSMutableArray alloc] initWithCapacity:3]; 

// create a standard save button 
UIBarButtonItem *saveButton = [[UIBarButtonItem alloc] 
    initWithBarButtonSystemItem:UIBarButtonSystemItemSave 
    target:self 
    action:@selector(saveAction:)]; 
saveButton.style = UIBarButtonItemStyleBordered; 
[buttons addObject:saveButton]; 

// create a spacer between the buttons 
UIBarButtonItem *spacer = [[UIBarButtonItem alloc] 
    initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace 
    target:nil 
    action:nil]; 
[buttons addObject:spacer]; 

// create a standard delete button with the trash icon 
UIBarButtonItem *deleteButton = [[UIBarButtonItem alloc] 
    initWithBarButtonSystemItem:UIBarButtonSystemItemTrash 
    target:self 
    action:@selector(deleteAction:)]; 
deleteButton.style = UIBarButtonItemStyleBordered; 
[buttons addObject:deleteButton]; 

// put the buttons in the toolbar and release them 
[toolbar setItems:buttons animated:NO]; 

// place the toolbar into the navigation bar 
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] 
              initWithCustomView:toolbar]; 
+0

alınan ilgili kod eklendi böylece zaman ölebilir olarak SO üzerinde cevaplar olarak bağlantıları koyarak nefret ediyorum. upvoted – dubbeat

+7

görünüşte kopyalanmış sözdizimi http://blog.blackwhale.at/2009/06/uibuttons-in-uinavigationbar/ –

+0

Bu iyi, ancak araç çubuğu çok yüksek olduğundan manzaraya döndüğünde çok iyi değil. Ne yazık ki şu anda bunun için bir çözüm sunamıyorum. –

3
you have to create a view with as much button you required and have to add them on navigation button like following : 

    UIView *parentView1 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 60, 44)]; 
     UIButton *infoButton1 = [[UIButton alloc] initWithFrame:CGRectMake(0, 6, 30, 32)]; 
     [infoButton1 setBackgroundImage:[UIImage imageNamed: @"navbtn.png"] forState:UIControlStateNormal]; 
     [infoButton1 setTitle:@"Back" forState:UIControlStateNormal]; 
     infoButton1.titleLabel.font = [UIFont systemFontOfSize:13.0f]; 
     infoButton1.titleLabel.textColor = [UIColor whiteColor]; 
     [infoButton1 addTarget:self action:@selector(backBarButtonClicked) forControlEvents:UIControlEventTouchUpInside]; 
     [parentView1 addSubview:infoButton1]; 
     [infoButton1 release]; 

UIButton *infoButton2 = [[UIButton alloc] initWithFrame:CGRectMake(30, 6, 30, 32)]; 
     [infoButton2 setBackgroundImage:[UIImage imageNamed: @"navbtn.png"] forState:UIControlStateNormal]; 
     [infoButton2 setTitle:@"Back" forState:UIControlStateNormal]; 
     infoButton2.titleLabel.font = [UIFont systemFontOfSize:13.0f]; 
     infoButton2.titleLabel.textColor = [UIColor whiteColor]; 
     [infoButton2 addTarget:self action:@selector(backBarButtonClicked) forControlEvents:UIControlEventTouchUpInside]; 
     [parentView1 addSubview:infoButton2]; 
     [infoButton2 release]; 
     UIBarButtonItem *customBarButtomItem1 = [[UIBarButtonItem alloc] initWithCustomView:parentView1]; 
     [parentView1 release]; 
     self.navigationItem.leftBarButtonItem = customBarButtomItem1; 
     [customBarButtomItem1 release];`enter code here` 
2

bu soru zaten kapatıldı biliyorum ama UIToolbar çözüm görsel uymadığını bulabilirsiniz.

yerine daha düğmeleri eklemek ve görsel orijinali ile eşleşen bir bar olabilir, sıfır olan bir başlık ve istenen düğmeler vardır bir UINavigationItem ile ikinci UINavigationBar setini kullanın. iOS 5 itibaren

+0

Akran iOS5'i desteklemeniz gerekiyorsa iyi bir cevap, ama dikkat etmeniz gereken bir şey ... bu, görünüm denetleyicilerinizin ana navigasyonunu ayarlamak istediğinizde işe yaramaz. Bu örnekte UINavigationBar 74px yüksekliğindedir) –

75

itibaren, artık o setLeftBarButtonItems:animated: veya -iOS7 için

+6

Bu şimdiki geçerli cevaptan daha alakalı. – ettore

0
- (void)viewWillAppear 
{ 

    // get a view and : 
    [self.navigationController.navigationBar addSubView:yourView]; 

} 
+2

Bu kodun neden işe yaradığını açıklamak için bazı anlatılar eklemeyi düşünür müsün? Bu, soruyu soran kişiye ve birlikte gelen herkese çok yardımcı olacaktır. –

1

setRightBarButtonItems:animated: ve daha yüksek kullanarak yapabilirsiniz, bunu yapmak için doğru yoldur. UIToolbar sersemliklerine gerek yok.

- (void)viewDidLoad { 

    [super viewDidLoad]; 
    [self configureView]; 

    // create three funky nav bar buttons 
    UIBarButtonItem *one = [[UIBarButtonItem alloc]initWithTitle:@"One" style:UIBarButtonItemStylePlain target:self action:@selector(testMethod)]; 
    UIBarButtonItem *two = [[UIBarButtonItem alloc]initWithTitle:@"Two" style:UIBarButtonItemStylePlain target:self action:@selector(testMethod)]; 
    UIBarButtonItem *three = [[UIBarButtonItem alloc]initWithTitle:@"Three" style:UIBarButtonItemStylePlain target:self action:@selector(testMethod)]; 

    // create a spacer 
    UIBarButtonItem *space = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:self action:nil]; 
    space.width = 30; 

    NSArray *buttons = @[one, space, two, space, three]; 

    self.navigationItem.rightBarButtonItems = buttons; 
} 

enter image description here

Ben bu çok yararlı bir örnektir HERE

+0

mükemmel çalışıyor adamım ... teşekkürler. –