2015-06-22 5 views
6

Hallo, ich versuche, von einem Modal zu einem Tab Bar View Controller zu wechseln, ohne die Tab-Leiste zu verlieren? Ich weiß, die Frage ist kurz, aber das ist alles, was ich frage.Von der modalen Ansicht zur Registerkartenansicht wechseln und die Registerleiste nicht verlieren

Szenario: Ich habe eine Registerkarte Bar View Controller, A und B. B modals zu C View Controller. Dann möchte ich View Controller A. zurückzukehren

Swift bitte: D

+0

Sind Sie von einem Viewcontroller auf der Tab-Leiste Controller zurückkehrt, die modal vorgestellt wurde, oder präsentieren Sie modal ein Ansicht, die in einem Tab-Leiste-Controller enthalten ist? – vacawama

+0

Ja, Tableiste viewcontroller dann modal zu einem View-Controller dann zurück zu einer anderen Tab-Leiste viewcontroller – MasterWizard

+0

zurück zu einer anderen Registerkarte in der gleichen ViewController? – vacawama

Antwort

11

Hier ist mein Beispiel dafür, wie dies zu tun. In meinem Setup wähle ich den gelben ViewController von der Registerkarte, dann drücke Go! welches modal präsentiert die white ViewController. Drücken Exit kehrt zum grünen ViewController zurück.

Storyboard overview


dies einzurichten, verwenden Sie einen Abroller segue zum Viewcontroller zurückzukehren, die Sie genannt. Implementieren Sie dies zum Beispiel im ersten ViewController der Registerkarte (die den modalen Übergang aufruft).

@IBAction func backFromModal(_ segue: UIStoryboardSegue) { 
    print("and we are back") 
    // Switch to the second tab (tabs are numbered 0, 1, 2) 
    self.tabBarController?.selectedIndex = 1 
} 

Schalten Sie dann auf einen anderen Tab self.tabBarController?.selectedIndex = n mit dem n die Anzahl der Register ist, dass Sie wirklich wollen, um zu gehen. So stellen Sie den Abwickler segue up, können Sie entweder Steuer -Ziehen von einer Schaltfläche in der modal-View-Controller an das Ausfahrt-Symbol am oberen Rand des Viewcontroller und wählen backFromModal aus dem Pop-up ...

drag from button to Exit enter image description here


ODER

Sie den Abwickler segue einrichten können b programmatisch aufgerufen werden y Steuerung -dragging von viewController Symbol am oberen Rand des modalen ViewController zum Ausfahrt Symbol, und wählen Sie backFromModal aus dem Popup.

enter image description here

Dann gehen Sie auf die Dokument Gliederungsansicht und klicken Sie auf den Abroller segue

enter image description here

und geben ihm eine Kennung im Attribute Inspector auf das Recht (zum Beispiel "returnFromModal").

enter image description here

Dann würden Sie die Abroller segue wie folgt aufrufen:

self.performSegue(withIdentifier: "returnFromModal", sender: self) 
+0

perfekte Antwort! Es war genau mit dem, was ich tun wollte, ich weiß nicht, dass "self.tabBarController? .selectedIndex" existierte! – MasterWizard

+0

Wie leiten Sie Daten an den Green View Controller weiter? – Suragch

+0

@Suragh, um Daten an den grünen View-Controller von der weißen zu übergeben, ist es möglich, direkt auf den grünen View-Controller abzuwickeln und die Daten während 'prepare (for: sender:)' zu übergeben. – vacawama

Verwandte Themen