2016-04-18 31 views
8

ho una domanda per aggiungere un pulsante a destra nella barra di navigazione ..Come aggiungere il pulsante destro nella barra di navigazione?

Ho due punti di vista: Vista A e B View

aggiungo una barra di navigazione per visualizzare A, dopo che ho usato per mostrare self.navigationController!.pushViewController vista B.

Questo mostra un pulsante indietro nella parte sinistra della barra di navigazione della vista B automatico, è buono. ma ora voglio aggiungere un pulsante in alto a destra della barra di navigazione di vista B .. ho cercato alcune risposte, ma non funziona ... risposte che ho provato le piace: 1) https://www.hackingwithswift.com/example-code/uikit/how-to-add-a-bar-button-to-a-navigation-bar 2) http://blog.apoorvmote.com/add-multiple-bar-button-item-navigation-bar/?lang=fr

Potrebbe aiutarmi, grazie!

risposta

21

La versione Swift di La risposta di Vahan Babayan, come sembra che tu usi questa lingua, è:

let rightButtonItem = UIBarButtonItem.init(
     title: "Title", 
     style: .Done, 
     target: self, 
     action: "rightButtonAction:" 
) 

self.navigationItem.rightBarButtonItem = rightButtonItem 

Il seguente metodo sarà chiamato sull'auto:

func rightButtonAction(sender: UIBarButtonItem) 

Nota che tutto questo può essere impostata graficamente usando uno storyboard, trascinando la Barra Pulsanti oggetto nella tua Voce di navigazione e tasto destro del mouse per impostare un target-azione.


Un piccolo aggiornamento dal Swift 3 e 4 sono fuori: il compilatore può ora controllare nomi selettore, evitando errori di battitura durante l'impostazione porta-azione programatically. Così si dovrebbe davvero usare:

let rightButtonItem = UIBarButtonItem.init(
     title: "Title", 
     style: .Done, 
     target: self, 
     action: #selector(rightButtonAction(sender:)) 
) 
+1

Grazie per la risposta, ho finanziare la risposta a 'far rightBtn = UIBarButtonItem (titolo: "Send", stile:.Normale, target: self, action: "send:") self.navigationItem.setRightBarButtonItem (rightBtn, animato: true) 'So che posso usare XIB per farlo, ma non so perché la posizione del pulsante destro non è lo stesso con XIB, quindi uso il codice per farlo – user2262304

4

È possibile aggiungere il seguente codice al metodo viewDidLoad del controller B.

UIBarButtonItem *rightButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Title" 
                    style:UIBarButtonItemStyleDone 
                    target:self 
                    action:@selector(rightButtonAction:)]; 
self.navigationItem.rightBarButtonItem = rightButtonItem; 
0

Aggiungere di seguito il codice nel metodo viewDidLoad

UIBarButtonItem *flipButton = [[UIBarButtonItem alloc] 
           initWithTitle:@"Flip"            
           style:UIBarButtonItemStyleBordered 
           target:self 
           action:@selector(flipView:)]; 
self.navigationItem.rightBarButtonItem = flipButton; 

Ciò aggiunge un pulsante alla destra con il titolo flip, che chiama il metodo:

-(IBAction)flipView 
2
- (void)viewDidLoad { 

    [super viewDidLoad]; 
    UIBarButtonItem *rightBtn = [[UIBarButtonItem alloc]initWithTitle:@"Right Button" style:UIBarButtonItemStyleDone target:self action:@selector(rightBtnClick)]; 
    self.navigationItem.rightBarButtonItem = rightBtn; 
} 

-(void)rightBtnClick{ 
    // code for right Button 

} 
0

codice Swift per aggiungere una voce di navigazione pulsante della barra:

Metodo 1 (quando si vuole oggetto di uso del sistema pulsante della barra)

navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(addTapped)) 

Metodo 2 (Quando si desidera assegnare il proprio titolo al pulsante)

navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Add", style: .plain, target: self, action: #selector(addTapped)) 

Da iOS 5 in poi, consente di aggiungere più di un pulsante su entrambi i lati di una barra di navigazione. Qualcosa di simile a questo:

let add = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(addTapped)) 
let display = UIBarButtonItem(title: "Display", style: .plain, target: self, action: #selector(playTapped)) 

navigationItem.rightBarButtonItems = [add, display]