2016-08-01 23 views
1

Ich habe einen View Controller, der der 2. View Controller ist und eine Navigationsleiste benötigt. Der erste ist ein Controller, der keine Nav Bar benötigt und der 3rd View Controller benötigt eine Navigationsleiste.Navigationsleiste Fehler beim Verschieben ViewController

Pro Stack wird der 3rd View-Controller kein Top-of-Stack sein.

Ich habe diese Methoden in dem 2.-View-Controller implementiert:

override func viewWillAppear(animated: Bool) { 

    super.viewWillAppear(animated) 
    if self.navigationController?.navigationBarHidden == true{ 
     self.navigationController?.navigationBarHidden = false 
    } 

    self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .Plain, target: nil, action: nil) 
    self.navigationController?.navigationBar.tintColor = Quikr_Util.colorWithHexString("#0083cb") 
} 

override func viewWillDisappear(animated: Bool) { 
    super.viewWillDisappear(animated) 
    if self.navigationController?.navigationBarHidden == false{ 
     self.navigationController?.navigationBarHidden = true 
    } 
} 

Die Dinge funktionieren gut, wenn eine Anwendung eine back Bar-Taste vom 3. bis zurück zum 2. View-Controller.

Dinge wurden unordentlich, als ich zum Beispiel von einem View Controller zu einem anderen rutschte, wenn ich halb rutsche und dann loslasse.

Es bedeutet Verschieben von 3rd auf 2nd aber Freigabe dazwischen, so dass es auf 3rd View Controller statt Sekunde geht.

Was ist die beste Möglichkeit zum Ein- und Ausblenden von Ansichtsnavigationsleisten?

Zweitens, wie funktioniert gleiten, welche Funktionen werden aufgerufen, wenn Gleiten passiert?

+0

Sie zeigt Could Genauer gesagt über "Dinge wurden unordentlich?" – Idan

Antwort

0

Für Ihre erste Frage

die Navigation Controller zu verstecken und zeigen, in 2. und 3. View-Controller, können Sie verwenden:

  • ausblenden:

    navigationController?.setNavigationBarHidden(true, animated: false) 
    
  • Anzeigen:

    navigationController?.setNavigationBarHidden(false, animated: false) 
    

Es ist nicht wirklich notwendig zu prüfen, ob es versteckt ist oder nicht.

Für die zweite Frage, können Sie UIGestureRecognizer verwenden

Edit: einfach klar, statt Versteck zu sein und die in der gleichen Datei, verstecken und zeigen in viewDidAppear() in benötigt schnellen Dateien

+0

Wie kann ich in Viewdidload verstecken und zeigen? –

+0

von zwei verschiedenen View-Controller-Dateien – Idan

+0

Okay lass es mich versuchen –