2012-11-06 13 views
6

Ich habe eine Reihe von iOS-Anwendungen vor einem Jahr auf einer alten Version von Xcode geschrieben. Ich habe gerade ein neues Projekt gestartet und die Storyboard-Funktion im neuesten Xcode entdeckt. Es stellt sich heraus, dass dies perfekt für die Anwendung ist, die ich schreibe, da es aus ~ 30 miteinander verbundenen Bildschirmen besteht.Wie zu vermeiden, Modal Storyboard Endlosschleife

Meine Frage ist, wie strukturiere ich meine Storyboard und segues, damit meine Anwendung einen kreisförmigen Pfad durch meine Bildschirme folgen kann. Ich habe eine Anzahl von examples gesehen, die einfach Bildschirm 1 zu Bildschirm 2 und dann Bildschirm 2 zu Bildschirm 1 mit der modalen Option. Dies funktioniert ganz klar, aber wenn ich eine auf diese Weise erstellte Anwendung debugge, instanziiert sie eine neue Instanz jedes Bildschirms (View-Controller) für jeden durchgeführten Übergang. In der Abbildung unten (ich habe ein schönes Bild gezeichnet, aber aufgrund meines Status als Neuling konnte ich es nicht posten), wie gehe ich von Bildschirm 1 zu Bildschirm 2 zu Bildschirm 3 und zurück zum ursprünglichen Bildschirm 1, ohne ein neues zu erstellen Beispiel?

Antwort

3

Ok, ich habe ein bisschen Forschung seit dem Stellen dieser Frage getan, und ich glaube, dass ich eine vernünftige Antwort auf die Frage zur Verfügung stellen kann. Kurz gesagt, der Ansatz, den ich in der Frage vorgeschlagen habe, ist nicht kompatibel mit der Art und Weise, wie Storyboards und Segmente tatsächlich funktionieren. Segues immer instanziieren Sie eine neue Instanz des View-Controllers/View, die es anvisiert. Dies bedeutet, dass wir, wenn wir von Bildschirm 3 zurück zu Bildschirm 1 gehen, zu einer neuen Instanz von Bildschirm 1 gehen, nicht zum Original. Um dies zu beheben, werde ich das Storyboard etwas anders implementieren.

// Screen 1 --> Screen 2 
//  | 
//  +------> Screen 3 

I wird dann confiure Bildschirm 1 für eine ‚nächste Bildschirm‘ Nachricht abzuhören (via delegieren/protocol) vom Schirm 2 und 3.

Wenn der Benutzer auf dem Bildschirm 1 der Taste für die Bildschirm wählt 2 Das Storyboard und der Übergang werden die modale Instanziierung von Bildschirm 2 übernehmen. Wenn der Benutzer auf Bildschirm 2 die Schaltfläche "Nächster Bildschirm" auswählt, statt Bildschirm 3 zu verlassen, werde ich Bildschirm 2 verlassen und Bildschirm 1 Bildschirm 3 über den neuen starten Bildschirm 1 -> Bildschirm 3 segue.

Dieser Ansatz hat den Vorteil, dass der Bildschirm 1 der Hauptcontroller für alle folgenden Bildschirme in der Schleife ist (in meinem Fall habe ich 10 Bildschirme/Übungen in der Schleife). Der einzige Nachteil ist, dass das Storyboard den Fluss der Bildschirme nicht gut wiedergibt.

Ich hoffe, dass dies hilft anderen versuchen, die gleiche Sache in ihren iOS-Projekten zu erreichen.