2017-05-01 3 views
0

Ich möchte die spezifische Ansicht aus dem Benachrichtigungs-Widget öffnen. normalerweise andere Antworten sind neue Ansicht erstellen .. (let viewcontroller = ...) so Wenn Sie rufen weiterhin, verwenden Speicher ..swift3 wie navigation viewcontroller

So weiter, ich will ViewA öffnen, die bereits in meiner App geöffnet wird, und dann zu ViewB bewegen.

Meine Anwendungsstruktur ist im Grunde eine AnsichtA, wenn die Anwendung gestartet wird.

Was ich denke ist, dass, anstatt eine neue AnsichtA zu erstellen, ich mit der Navigation.push aus der bereits vorhandenen AnsichtA zu AnsichtB wechseln möchte.

Der Weg zu prüfen, ob eine bestimmte Seite bereits existiert, wie diese Seite an der Spitze angezeigt wird und wie navigation.push funktioniert.

jetzt diesen Code ich verwende ViewA zu öffnen von Appdelegate

let MainView: Main_View_List_ = mainStoryboard.instantiateViewController(withIdentifier: "Main_List_View") as! Main_View_List_ 
let nav = UINavigationontroller.init(rootViewController: MainView) 
UIApplication.topViewController()?.present(nav, animated: true, completion: nil) 

Antwort

0

Sie Zugriff auf die Navigationssteuerung haben Angenommen, Sie so etwas wie dies tun wollen zurück zu ViewA Pop:

 for viewController in nav.viewControllers { 
     if viewController is ViewAClass { 
      viewController.pushViewBFlag = true 
      nav.popToViewController(viewController, animated: true) 
      return 
    } 
    } 

Sobald Sie zurück zur Ansicht A gelangen, können Sie nach pushViewBFlag suchen und pushviewB erstellen und schieben.

Da es so aussieht, als ob Sie ViewA als Wurzel Ihres Navigationscontrollers festlegen, können Sie Folgendes tun: nav.popToRootViewControllerAnimated(true), um zur Ansicht zurückzukehren. Sie müssten dann mit dem Drücken von viewB von viewA umgehen.

Verwandte Themen