2016-07-18 3 views
1

Ich scheine die Zurück-Taste des Navigation richtig eingestellt sein nicht in der Lage programmatisch das zeigt, wenn eine vorherige AnsichtEinstellen der Zurück-Button in der Navigationssteuerung bis

self.navigationController?.pushViewController(newView, animated: true) 

nutzt ich alle Ansichten aus dem vorherigen verstecken Ansicht in es ist viewDidDisappear mit einer Schleife und in der neuen Ansicht in der Ansicht angezeigtDidAppear Ich versuche, die Aktion der Zurück-Taste auf verschiedene Arten zu setzen; aber während es mir gelingt, den Zurück-Button zu manipulieren, der automatisch angezeigt wird, wie zum Beispiel das Verbergen oder Ändern des Bildes, kann ich seine Aktion nicht einrichten.

Jeder Einblick wäre willkommen, da keine der Antworten, die ich gefunden habe, korrekt zu funktionieren scheint. Auch dies geschieht ohne Verwendung des Storyboards

if let img = UIImage(named: "backButton") { 
       self.navigationController?.navigationBar.backIndicatorImage = img 
       self.navigationController?.navigationBar.backIndicatorTransitionMaskImage = img 
       print("IMAGE") 
      } 
      topItem.backBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Rewind, target: self, 
                 action:#selector(self.backButtonAction(_:))) 
+0

Ändern Sie Ihre Navigationsleiste Bild/Text in ViewDidLoad oder ViewWillAppear, nicht in der ViewDidAppear-Methode. – Suresh

+0

Es ändert sich in der ViewDidAppear, sollte es stattdessen in der ViewDidLoad angezeigt werden? In der vorherigen Ansicht ist der Navigations - Controller völlig anders, daher benutze ich viewDidAppear und viewDidDisappear, um den UIView mit den Controllern und den viewDidAppear in der neuen UIView anzuzeigen/auszublenden, um einen einfachen Titel hinzuzufügen und dem Zurück - Knopf eine Funktion hinzuzufügen erscheint automatisch), um die Ansicht zu öffnen – kdgwill

Antwort

1

In Ihrem Fall fügen Sie eine benutzerdefinierte Schaltfläche auf der Navigation hinzu.

class YourViewController: UIViewController { 
//Navigation Items. 

//left bar button item. 
private var leftBarButtonItem : UIBarButtonItem! 

//left button. 
private var navigationLeftButton : UIButton! 

//Your other variable/object declaration. 

    func viewDidLoad() { 
    super.viewDidLoad() 
    self.leftBarButtonItem = UIBarButtonItem() 
    } 

    func viewDidAppear(animated: Bool) { 
     super.viewDidAppear(animated) 

     self.setNavigationBackButton() 
    } 



    private func setNavigationBackButton() { 

    if(self.navigationLeftButton == nil) { 
     self.navigationLeftButton = UIButton(type: UIButtonType.System) 
    } 


    //Styling your navigationLeftButton goes here... 

    self.navigationLeftButton.addTarget(self, action: Selector("backButtonTapped"), forControlEvents: UIControlEvents.TouchUpInside) 
    self.leftBarButtonItem.customView = self.navigationLeftButton 
    self.navigationItem.leftBarButtonItem = self.leftBarButtonItem 
    } 

    func backButtonTapped(AnyObject:sender) { 
    // Here add your custom functionalities. 
    // Note, this will not pop to previous viewcontroller, 

    } 
} 
+0

Dies funktionierte perfekt; Ich nahm an, dass ich die Rücktaste im Navigationscontroller nutzen könnte, da sie nicht null zurücklief, sondern einige Probleme aufwarf. Vielen Dank – kdgwill