2016-04-08 6 views
0

Lassen Sie mich zunächst damit beginnen, indem ich sage, dass ich alle meine Codierung programmgesteuert mache. Mein Problem ist, dass ich das klassische iOS "< zurück" nicht in meiner Navigationsleiste produzieren kann. Ich vermute, das liegt daran, dass ich keine Storyboards verwende?Kann nicht "<Back" in Swift-Navigationsleiste Programmatisch produzieren

Dies ist die Funktion, die ich die Navigationsleiste erstellen bin mit:

// Makes a navigation Bar 
func makeNavigationBar(navigationBar: UINavigationBar, barTitle: String, forwardButton: Bool, backButton: Bool, page: UIViewController){ 
    // Create a navigation item with a title 
    let navigationItem = UINavigationItem() 
    navigationItem.title = barTitle 

    // Create left navigation item 
    if(backButton){ 
    let leftButton = UIBarButtonItem(title: "Back", style: UIBarButtonItemStyle.Plain, target: page, action: "backClicked:") 
    // Create two buttons for the navigation item 
    navigationItem.leftBarButtonItem = leftButton 
    } 
    if(forwardButton){ 
    let rightButton = UIBarButtonItem(title: "Next", style: UIBarButtonItemStyle.Plain, target: page, action: "nextClickedClicked:") 
    // Create two buttons for the navigation item 
    navigationItem.rightBarButtonItem = rightButton 
    } 
    // Assign the navigation item to the navigation bar 
    navigationBar.items = [navigationItem] 
    //Adds the bar to the view 
    page.view.addSubview(navigationBar) 
} 

Dies ist der Anruf, den ich zu dieser Funktion machen bin:

let navigationBar = UINavigationBar(frame: CGRectMake(0, 0, self.view.frame.size.width, height/12)) 
creationFunctions.makeNavigationBar(navigationBar, barTitle: "", forwardButton: false, backButton: true, page: self) 

Hier ist die „backClicked“ -Funktion:

func backClicked (sender: UIBarButtonItem!){ 
    self.dismissViewControllerAnimated(true, completion: {}); 
} 

Vielen Dank für Ihre Hilfe.

+0

Ihnen helfen, den Rücken Wert am Regler sollte, dass so etwas wie 'self.navigationItem.backBarButtonItem = UIBarButtonItem (Titel "schiebt": "Back", style: .Plain , target: page, action: "backClicked:") 'Sie können diesen Code in Ihrem Perform-Segment mit dem Bezeichner hinzufügen. – Lucho

+0

@Lucho kann ich immer noch tun, wenn ich Preform nicht mit Identifier befolge? Ich mache nur anwesend und entlassen – DMop

+0

Versuchen Sie es auf ViewDidLoad hinzufügen. – Lucho

Antwort

0

Hallo hier ist es Code, der benutzerdefinierte Zurück-Schaltfläche erstellt und fügen Sie NavigationController. Ich habe diese Methoden in meiner ViewController-Klasse.

func addBackButton() { 
    let image = UIImage(named: "BackImage")!.imageWithRenderingMode(.AlwaysOriginal) 
    self.navigationItem.leftBarButtonItem = UIBarButtonItem(image: image, style: .Plain, target: self, action: "backClicked:") 
} 

func backClicked (sender: UIBarButtonItem!){ 
    self.dismissViewControllerAnimated(true, nil); 
} 

Hoffe, dass es Sie

+0

Ich benutze Gegenwart und entlassen, weil sie nicht in einem Stapel sind. Kann ich noch Push und Pop damit benutzen? – DMop

+0

Natürlich, wenn sie nicht in einem Stapel sind, können Sie Pop nicht verwenden, mein Fehler. Überprüfen Sie den bearbeiteten Code. – kamwysoc

+0

Warum brauche ich ein Back-Image? Sollte der Standard-Back-Pfeil nicht geladen sein? – DMop

Verwandte Themen