2016-04-18 10 views
8

Ich habe eine Frage eine rechte Taste in Navigationsleiste hinzuzufügen ..Wie man den rechten Knopf in der Navigationsleiste hinzufügt?

Ich habe zwei Ansichten: Modell A und Modell B

ich hinzufügen, eine Navigationsleiste A zu sehen, nachdem ich self.navigationController!.pushViewController verwenden Ansicht zeigen B.

Das zeigen eine Zurück-Taste in der linken Navigationsleiste der Ansicht B automatisch, es ist gut. aber jetzt möchte ich eine Schaltfläche in der rechten Navigationsleiste der Ansicht B hinzuzufügen .. Ich habe einige Antworten versucht, aber es funktioniert nicht ... Ich habe versucht, Antworten mag: 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

Können Sie mir helfen, danke!

Antwort

21

Die Swift-Version Vahan Babayans Antwort, wie Sie diese Sprache zu verwenden scheinen, ist:

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

self.navigationItem.rightBarButtonItem = rightButtonItem 

Die folgende Methode wird auf Selbst aufgerufen werden:

func rightButtonAction(sender: UIBarButtonItem) 

Beachten Sie, dass dies alles grafisch eine Storyboard, durch einen Bar-Knopf Artikel auf Ihre Navigation Artikel Ziehen und Rechtsklick mit eingestellt werden kann, ein setzen Ziel-Aktion.


Ein kleines Update seit Swift 3 und 4 sind aus: der Compiler kann nun Selektornamen überprüfen, verhindert Fehler, wenn das Ziel-Aktion programmatisch einrichten. Also sollte man wirklich nutzen:

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

Vielen Dank für Ihre Antwort, ich habe die Antwort auf 'let rightBtn = UIBarButtonItem (Titel:" Senden ", Stil:.Plain, target: self, Aktion: "send:") self.navigationItem.setRightBarButtonItem (rightBtn, animiert: true) 'Ich weiß, dass ich XIB dazu benutzen kann, aber ich weiß nicht warum die Position der rechten Taste nicht ist das Gleiche mit XIB, also verwende ich Code, um dies zu tun – user2262304

4

Sie können den folgenden Code zur viewDidLoad Methode Ihres B-Controllers hinzufügen.

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

unten Code hinzufügen in viewDidLoad Methode

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

Dies mit dem Titel Flip einen Knopf auf der rechten Seite ergänzt, die die Methode aufruft:

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

Swift Code eine Navigationsleiste Schaltfläche Element hinzufügen:

Methode 1 (Wenn Sie möchten, verwenden bar Knopfsystem Artikel)

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

Methode 2 (Wenn Sie Ihrem Knopf einen eigenen Titel geben möchten)

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

Ab iOS 5 können Sie mehr als eine Schaltfläche auf beiden Seiten einer Navigationsleiste hinzufügen. So etwas wie das:

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] 
Verwandte Themen