2017-01-12 1 views
2

Ich versuche, ein Registrierungsformular mit mehreren Ansichten, aber nur eine Ansicht Controller zu machen. Nachdem ich zur nächsten Ansicht gegangen bin, schreibe ich die Eingabe in eine Struktur, die später an den Server gesendet wird. Das Problem, mit dem ich konfrontiert bin, ist, dass die VC beim Eingeben der neuen Ansicht neu initialisiert wird und daher die Benutzerstruktur ebenfalls neu initialisiert wird. Gibt es eine Möglichkeit, mit mehreren ViewControllern herumzukommen?Single-View-Controller für mehrere Ansichten

+0

Wie gehen Sie zur nächsten Ansicht? –

+0

Durch Auslösen eines Segments – Raoul

+0

Segues sind immer von einer Ansicht Controller zu einem anderen. Sie müssen Ihre einzelne VC verwenden und benutzerdefinierte animierte Übergänge wie die unten beschriebenen durchführen. –

Antwort

1

Es klingt, als ob Sie einen Navigationscontroller verwenden, um neue Kopien desselben View Controllers zu übertragen, wenn Ihr Benutzer von der Ansicht zur Anzeige wechselt.

Was ich empfehlen, ist Ihre einzige Ansicht Controller (die eine Inhaltsansicht hat) und mehrere Unterklasse UIViews.

Wenn der Benutzer auf "Weiter" klickt, um zur nächsten Ansicht zu gelangen, animieren Sie, die alte Ansicht aus dem Weg zu räumen und die neue in Position zu bringen.

Checkout "Beispiel II" von this tutorial. Verwenden Sie anstelle von Bildansichten Ihre eigenen benutzerdefinierten (untergeordneten) UIViews.

Here is a related question mit mehr Beispielcode.

0

Wenn der einzige Grund für die Verwendung eines Ansichtscontrollers darin besteht, dass Sie Ihre Daten auf den verschiedenen Bildschirmen, die Sie darstellen möchten, beibehalten können, sollten Sie Ihre Daten außerhalb der View-Controller-Klasse speichern. Zum Beispiel durch eine andere Klasse mit einer gemeinsamen Instanz mit:

class DataContainer { 

    let sharedInstance = DataContainer() 

    var someString: String? 

} 

Sie jetzt die gleichen Daten von jedem View-Controller (ohne die Daten zu verlieren, wenn zu einer anderen Ansicht Controller bewegt) wie folgt zugreifen können:

if let someString = DataContainer.sharedInstance.someString { 
    print(someString) 
} 
0

Sie benötigen einen übergeordneten Ansichts-Controller, der den childViewController enthält, der zu Ihrem Registrierungspfad gehört. Hier ist ein einfaches Tutorial, wie Sie diese Funktion (in diesem Fall das Hinzufügen eines Swipe Gesture Recognizer zur Navigation) von Vea Software erreichen können.

Tutorial

wie dies alle Ihre childViewController können ihre eigenen benutzerdefinierten Klasse für Logik haben, und Sie müssen nicht einen Übergang zwischen ihnen laufen ... scrollen Sie einfach miteinander.

Verwandte Themen