2016-07-10 15 views
0

Nach dem Lesen dieser Frage zu setzen: How to set back button text in Swift,Versuch rightBarButton programmatisch in Swift

Ich begann den Code bewegt ich die Navigationsleiste rechts-Taste, um den View-Controller zu konfigurieren, wurde mit, der die xib ruft ich präsentieren (ParticipantEditorViewController) wie folgt:

import UIKit 

class ViewController: UIViewController { 

    /* 
    * This is placeholder class. The code below will need to be added to whichever view controllers summon the participant editor, in their prepareForSegue method. 
    */ 

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     print("snap") 

     if let participantEditor = segue.destinationViewController as? ParticipantEditorViewController { 
      print("crackle") 

      let barButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Action, target: participantEditor, action: nil) 
//   let barButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Action, target: participantEditor, action: Selector(participantEditor.presentActionMenu())) 
      print("pop") 

      navigationItem.rightBarButtonItem = barButton 
     } 
    } 
} 

Aber ich bin immer noch nicht in der Lage, die Navigationsleiste programmgesteuert zu konfigurieren. Irgendwelche Hilfe auf was ich vermisse?

+0

Die Snap, Crackle und Pop-Saiten werden auf der Konsole gedruckt, so dass ich weiß, dass das if-let ausgelöst usw. –

Antwort

2

Die Funktion prepareForSegue wird aufgerufen, wenn Sie zu einem anderen View-Controller wechseln. Wenn Sie die Navigationsleiste konfigurieren möchten, tun Sie dies in einer anderen Funktion, die aufgerufen wird, wenn der View-Controller angezeigt wird, z. B. viewDidLoad.

+0

Danke für die schnelle Antwort Fredric. Ich habe versucht, es in 'viewWillAppear' zu tun, aber es hat nicht funktioniert. Die Antwort, auf die ich im ersten Satz Bezug genommen habe, besagt, dass dies aus "prepareForSegue" erfolgen muss, da die Navigationsleiste nicht Teil der dargestellten Ansicht ist. Zumindest habe ich die Antwort verstanden. –

+0

Ja, um den Zurück-Button zu setzen, müssen Sie das in 'prepareForSegue' machen, da die Eigenschaft zum Vorschau-View-Controller gehört. Um die rechte Leiste zu setzen, müssen Sie sie jedoch im aktuellen Ansichts-Controller einstellen (der, der die rechte Schaltfläche anzeigt). –

+0

Wow, okay, das macht so viel mehr Sinn. Ich dachte, die ganze Navigationsleiste gehöre dem vorherigen Bildschirm, aber das macht viel mehr Sinn. –