2017-01-31 3 views
0

Ich habe ViewController (VC_1), der in NavigationController eingebettet ist. In VC_1 gibt es TableView mit Zellen und es gibt einen Übergang von jeder Zelle zu ViewController mit detaillierten Informationen (VC_2).Zwei Übergänge von ViewController und ViewController in Navigation Controller

Also, wenn ich eine Zelle in VC_1 berühren, bekomme ich VC_2 mit Navigationsleiste und Zurück-Taste.

Was ist, wenn ich separate ViewController VC_3 habe, die nicht in NavigationController ist. Es hat auch Zellen mit Überleitung zu VC_2 mit derselben Kennung, die die Zelle von VC_1 hat. Wenn ich von VC_3 zu VC_2 komme, sehe ich keine Navigationsleiste mit Zurück-Taste. Wie sind die Wege damit umzugehen?

enter image description here

+0

** Wenn ich von VC_3 zu VC_2 komme, sehe ich keine Navigationsleiste mit Zurück-Taste. ** wie du den VC2 von VC2 zu VC3 –

+0

präsentiere/ich kann VC_3 von VC_1 öffnen und danach habe ich segue von jeder Zelle zu VC_2 (Art = Details anzeigen (zB Ersetzen)) – moonvader

+0

Sie sollten nicht jedem VC einen eigenen Navigationscontroller geben müssen. Entweder verwenden Sie nicht den Navigationscontroller der Root-VC, um die anderen VCs darzustellen, oder Sie integrieren jede VC in ihren eigenen Navigationscontroller. Bitte zeigen Sie uns einen Code, damit wir herausfinden können, welcher. – dylanthelion

Antwort

1

Sie können ein anderes navigation controller Platz direkt hinter dem (VC_3)

Hoffnung, das war hilfreich :)

+0

aber was ist, wenn ich will, dass es in VC_2 in jedem Fall eine Navigationsleiste geben wird? – moonvader

+0

Entschuldigung, ich habe deine Frage zuerst missverstanden, dann habe ich sie noch einmal gelesen und meine Antwort bearbeitet. Ich verstehe nicht, wie Ihr (VC_3) ist nicht in Ihrem Navigation Controller, aber ich denke, auch wenn es außerhalb der Navigation Controller, können Sie einen anderen Navigation Controller direkt hinter dem (VC_3) –

+0

Ich versuchte dies mit Glück – moonvader

0

Wenn Sie VC_3 von VC_1 mit Show (zB Push) segue der Navigationsleiste anzeigen muss in der VC_3 erscheinen.

Was passiert, wenn ich separaten Viewcontroller VC_3 haben, die nicht innerhalb Navigation ist.

Von hier aus verstehe ich, dass Sie keine Navigationsleiste auf VC_3 wollen. So können Sie die Navigationsleiste im viewWillAppear von VC3 verstecken und zeigen wieder in der viewWillDissappear wie in dieser Antwort:

How to hide a navigation bar from first ViewController in Swift?

Dann, wenn Sie tun, um die Segue von VC_3 mit Show VC_2 (zB Push-) Sie werden die Navigation auf VC_2 ohne Probleme haben.

Wenn danach immer noch nicht funktioniert, überprüfen Sie, dass Sie die Zelle in VC_3 mit der dequeueReusableCell withIdentifier-Methode erstellen.

+0

Ich möchte NavigationBar um jedes Mal in VC_2 sichtbar zu sein. Und ich habe Probleme mit der Navigationsleiste, wenn ich den Übergang von VC_3 zu VC_2 mache – moonvader

+0

Versteckst du die Navigationsleiste von VC_3 vom Storyboard? Wenn der Push von VC_1 zu VC_3 korrekt ist, muss die Navigationsleiste auf dem Storyboard erscheinen. – Jaumefm17

0

Fügen Sie Ihrem Storyboard einen neuen Navigationscontroller hinzu. Nun ändern Sie die segues wie folgt aus:

Vc_1 -> neue Navigationssteuerung -> vc_3

Wenn tat macht keinen Sinn, das ist, was ich meine, die Segue ändern, die zur Zeit von VC1 bis VC3 gehen wird und machen Sie es zu einem neuen Navigationscontroller und verbinden Sie dann diesen Navigationscontroller und vc3 seinen Root-View-Controller machen.

0

Versuchen Sie, diese in der problematischen VC setzen:

override func viewWillAppear(_ animated: Bool) { 
     super.viewWillAppear(animated) 
     self.navigationController?.setNavigationBarHidden(false, animated: false) 
    } 

Und stellen Sie sicher, dass die segues Push verwenden. :)

Verwandte Themen