2016-11-15 3 views
0

Ich habe mein Storyboard mit einem LoginViewController erstellt, der als RootViewController festgelegt ist. Wenn der Benutzer bereits angemeldet ist, gehe ich einfach zum HomeViewController.Seltsames Verhalten beim Ausblenden Navigationsleiste Zurück Schaltfläche

Das Problem ist auf dem HomeViewController. Ich möchte nicht, den Benutzer auf LoginViewController zurück zu navigieren, so verwende Ich versuche, die Zurück-Taste in dem HomeViewController zu verstecken:

public override void ViewWillAppear(bool animated) 
{ 
    NavigationItem.SetHidesBackButton(true, false); 
} 

Dadurch wird die Schaltfläche versteckt auf den HomeViewController wie erwartet, aber wenn ich navigieren Bei anderen VCs ist der Zurück-Button immer noch versteckt, aber tappbar, weil ich tippen kann, wo der Button sein würde, und er würde zurück zum HomeVC navigieren. Wenn ich dann wieder zur selben VC wie vorher navigiere, ist die Zurück-Schaltfläche sichtbar. Also im Grunde ist es nur bei der ersten Ladung versteckt.

Irgendwelche Ideen?

Antwort

0

Das liegt daran, dass Sie SetHidesBackButton in Ihrem ViewWillAppear festlegen. Kopieren Sie es in Ihre ViewDidLoad(), und es sollte gut funktionieren.

More Info

+0

Danke. Versuchte das, aber es hat nicht funktioniert. – empo

0

Scheint Problem mit rootViewController, die Sie zuordnen und auch mit navigationController. Um dieses Verhalten zu vermeiden, sollten Sie navigieren und zuweisen rootViewController von AppDelegate, auch, verbessern Sie Ihre zurück Schaltfläche versteckt Code.

Für weitere Hilfe bitte Code einfügen, Danke!

AppDelegate.swift

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool { 

    var rootView: MyRootViewController = MyRootViewController() 

    if let window = self.window{ 
      window.rootViewController = rootView 
    } 

    return true 
} 

ViewDidLoad

navigationItem.hidesBackButton = true 
+0

Was ist der Unterschied zwischen dem Setzen des RootViewControllers in AppDelegate anstelle von Storyboard? Auch erklären Sie nicht wirklich, was das Problem mit meinem RootViewController/NavigationController ist - können Sie das bitte genauer erklären? – empo

+0

@empo Ja, Sie können es von überall verwenden, aber ich habe den Code nicht so gesehen, nur einen Vorschlag und guten Weg, wenn wir rootViewController von AppDelegate definieren könnten. Außerdem sollte die Zurück-Schaltfläche ausgeblendet werden, die Sie in viewDidLoad verwenden sollten. Danke vielmals :) –

0

Versuchen Sie nicht, den Knopf zu verstecken. Benutze NavigationController als root. Push-Login, dann nach Hause und entfernen Sie Login vom Navigationsstapel.

Verwandte Themen