2017-06-10 7 views
0

Ich möchte eine Zeichenfolge zwischen zwei Schnittstellen-Controllern übergeben. Auf InterfaceController1 Ich möchte wie eine Variable erstellen:Übergeben von Daten zwischen zwei Schnittstellen-Controllern

var level: String = ("easy") 

Und dann in der Lage sein, diese Variable für den Zugriff auf InterfaceController2.

Es gibt derzeit nur eine Antwort auf Stack Overflow, aber es wurde erstellt, als Swift 1 aus war und ich keine aktuellen Antworten finden kann.

Ich würde es vorziehen, keine globalen Variablen zu verwenden, da ich weiß, dass sie nicht empfohlen werden.

+0

Swift 1 und Apple Watch: \ - Ich glaube nicht, dass Sie Recht haben –

+0

Was meinst du @ Mr.Xcoder –

Antwort

0

Der beste Weg, dies zu erreichen, ohne ein Global oder Singleton zu verwenden (was in diesem Fall im Wesentlichen global ist), wäre die Verwendung des Delegatenmusters. In InterfaceController2 erstellen Sie einen Delegaten vom Typ InterfaceController1 und setzen ihn, wenn der InterfaceController2 angezeigt wird. Wenn Sie dann den Wert benötigen, können Sie InterfaceController1Delegate.level aufrufen, um auf den Wert zuzugreifen.

Sie könnten jedoch das Problem falsch gehen. Vom Klang Ihrer Namen und Werte scheint es, dass Sie die Statuswerte für die App in den View-Controllern beibehalten. Wenn das der Fall ist, würde ich bei einem MVC-Design bleiben und sie in einer Zustandsklasse oder Klassen halten, die herumgereicht werden oder auf die von den verschiedenen View-Controllern zugegriffen werden kann, die sie möglicherweise benötigen.

Verwandte Themen