2015-05-20 13 views
27

Mi piacerebbe avere più di un singolo UIBarButtonItem sul lato destro del mio UINavigationBar. Come posso raggiungere questo obiettivo?Come aggiungere più UIBarButtonItems sul lato destro della barra di navigazione?

Un esempio di ciò che sto provando sono i seguenti: si può notare che in alto a destra è presente più di un pulsante.

enter image description here

+0

possibile duplicato di [Come aggiungere 2 pulsanti nella UINavigationBar sul lato destro, senza IB?] (Http://stackoverflow.com/questions/1803609/ how-to-add-2-buttons-in-the-uinavigationbar-on-the-right-side-without-ib) –

risposta

61

Utilizzare questo in rapida:

override func viewDidLoad() { 
    super.viewDidLoad() 

    let editImage = UIImage(named: "plus")! 
    let searchImage = UIImage(named: "search")! 

    let editButton = UIBarButtonItem(image: editImage, style: .Plain, target: self, action: "didTapEditButton:") 
    let searchButton = UIBarButtonItem(image: searchImage, style: .Plain, target: self, action: "didTapSearchButton:") 

    navigationItem.rightBarButtonItems = [editButton, searchButton] 
} 

Scrivi le funzioni d'azione come questo:

func didTapEditButton(sender: AnyObject){ 
    ... 
} 

func didTapSearchButton(sender: AnyObject){ 
    ... 
} 
+0

grazie, ha funzionato. – user1406716

+0

Contrassegnato come risposta poiché questa è l'unica risposta rapida, ma grazie mille a tutti quelli che hanno risposto. – user1406716

+0

Ottenere un errore: il tipo contestuale 'UIBarButtonItem' non può essere utilizzato con l'array letterale – Profstyle

1
-(void)viewDidLoad{ 

    UIBarButtonItem *anotherButton1 = [[UIBarButtonItem alloc] initWithTitle:@"Button_1" style:UIBarButtonItemStylePlain target:self action:@selector(button_1:)]; 

    UIBarButtonItem *anotherButton2 = [[UIBarButtonItem alloc] initWithTitle:@"Button_" style:UIBarButtonItemStylePlain target:self action:@selector(button_2:)]; 

    [email protected][anotherButton1,anotherButton2]; 
} 
2

penso nulla di quanto sopra è andare a lavorare

Prova questo

var burgerItem = UIBarButtonItem(image: UIImage(named:"categories"), style: .Plain, target: self, action: "categories") 
     var weatherItem = UIBarButtonItem(title: "Weather", style: .Plain, target: self, action: "weather") 


     burgerItem.tintColor = UIColor.whiteColor() 
     weatherItem.tintColor = UIColor.whiteColor() 

     navigationItem.setRightBarButtonItems([burgerItem,weatherItem], animated: true) 

Devi usare navigationItem.setRightBarButtonItems e fate attenzione. navigationItem deve essere di un controller di visualizzazione.

class testViewController:UIViewController { 

ovverride func viewDidLoad() { 
    self.navigationItem.setRightBarButtonItems(... 

} 

} 
0

Questo è può essere di aiuto per voi in ,

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 

    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     self.navigationItem.title = @"Title"; 
     UIBarButtonItem *logOutButton = [[UIBarButtonItem alloc] initWithTitle:@"Logout" style:UIBarButtonItemStylePlain target:self action:@selector(ButtonClickedAtIndex1:)]; 
     [logOutButton setTintColor:[UIColor blackColor]]; 
     logOutButton.tag = 1; 

     UIBarButtonItem *syncBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Sync" style:UIBarButtonItemStylePlain target:self action:@selector(ButtonClickedAtIndex1:)]; 
     [syncBarButtonItem setTintColor:[UIColor blackColor]]; 
     syncBarButtonItem.tag = 2; 

     self.navigationItem.leftBarButtonItem = logOutButton; 
     self.navigationItem.rightBarButtonItem = syncBarButtonItem; 

     float systemVersion = [[[UIDevice currentDevice] systemVersion] floatValue]; 

     if (systemVersion >= 7.0) { 
      self.edgesForExtendedLayout = UIRectEdgeNone; 
      self.navigationController.navigationBar.translucent = NO; 
     } 
    } 
    return self; 
} 
+0

L'OP richiede due pulsanti sullo stesso lato. – daisy

1

In Swift 3 è possibile utilizzare:

let editImage = UIImage(named: "plus")! 
let searchImage = UIImage(named: "search")! 

let editButton = UIBarButtonItem(image: editImage, style: .plain, target: self, action: #selector(didTapEditButton)) 
let searchButton = UIBarButtonItem(image: searchImage, style: .plain, target: self, action: #selector(didTapSearchButton)) 

navigationItem.rightBarButtonItems = [editButton, searchButton] 
0

Basta aggiungere questo codice:

self.navigationItem.leftBarButtonItem = nil 

let button = UIButton(type: .custom) 
button.setImage(UIImage (named: "ChatTab"), for: .normal) 
button.frame = CGRect(x: 0.0, y: 0.0, width: 35.0, height: 35.0) 
//button.addTarget(target, action: nil, for: .touchUpInside) 
let barButtonItem = UIBarButtonItem(customView: button) 

let button2 = UIButton(type: .custom) 
button2.setImage(UIImage (named: "ActivityTab"), for: .normal) 
button2.frame = CGRect(x: 0.0, y: 0.0, width: 35.0, height: 35.0) 
//button.addTarget(target, action: nil, for: .touchUpInside) 

let barButtonItem2 = UIBarButtonItem(customView: button2) 
self.navigationItem.rightBarButtonItems = [barButtonItem, barButtonItem2] 

questo è il risultato:

enter image description here

Problemi correlati