2017-03-03 2 views
0

Ich versuche zu verhindern, dass einige ViewControllers zurückgehen. Ich habe UINavigationController in Unterklassen unterteilt, um einige Benutzeroberflächenanpassungen vorzunehmen. Ich passe die UINavigationController-Unterklasse an das UINavigationBarDelegate-Protokoll an und versuche, die navigationBar: shallPop-Methode zu implementieren. Ich habe diesen Code:UINavigationBarDelegate solltePop Artikel seltsames Verhalten

func navigationBar(_ navigationBar: UINavigationBar, shouldPop item: UINavigationItem) -> Bool { 
    print("Popping: \(item.title)") 

    return true 
} 

Wenn ich die Swipe von links Art und Weise verwenden, um zurückgehen, wird die Methode aufgerufen und alles funktioniert. Wenn ich die Zurück-Taste drücke, wird die Methode immer noch aufgerufen, aber der ViewController springt nicht. Wenn der ViewController der zweite auf dem Stapel ist, verschwindet die Zurück-Schaltfläche wie in der Navigationsleiste, dass das Poppen stattgefunden hat. Kann mir jemand helfen, dieses Verhalten zu verstehen?

Antwort

0

Sie haben die Ansicht manuell Pop:

func navigationBar(_ navigationBar: UINavigationBar, shouldPop item: UINavigationItem) -> Bool { 
    print("Popping: \(item.title)") 

    self.popViewController(animated: true) 

    return true 
}