Frage

Ich versuche, mein Problem zu erklären.In Appdelegate muss ich je nach Ergebnis einer asynchronen Anforderung einen RootViewController auswählen (Ich verwende AFNetworking-Framework).In der Tat muss ich wissen, ob mein Benutzer profiliert ist oder nicht: Wenn er profiliert ist, kann ich ihm das Haus der App zeigen, wenn er nicht ist, muss ich ihm eine Früchtungsansicht zeigen.

In Storyboard lege ich die Home-Ansicht als festgelegter Einstiegspunkt, aber auf diese Weise wird diese Ansicht immer angezeigt, bis die asynchrone Anforderung abgeschlossen ist.Gibt es eine Möglichkeit, Appdelegate auf die Antwort zu warten?

War es hilfreich?

Lösung

Ich denke, es gibt keine gute Lösung, um die App-Delegate auf die Antwort zu lassen, da, ob die Netzwerkverbindung schlecht ist, die App-Ladezeit sehr lang ist und das Betriebssystem Ihre App töten kann, oder Benutzer kann es ausschalten.

Sie können einen gewünschten Ladeansicht-Controller hinzufügen (mit Animation, so dass der Benutzer wissen wird, dass die App etwas tut, anstelle von zu Hause einen und wann Sie die entsprechende Ansicht der Antwort auf den Benutzer erhalten (Modal-Segue könnte den Job erstellen). Hoffe diese Hilfe

Andere Tipps

Eine bessere Lösung ist die Verwendung von Spritzbildschirmen.Das heißt, wenn Ihre App in Appdelegate geladen wird, erstellen und drücken Sie einen Splash-View-Controller.Das würde nur einen einzelnen UiimageView-Abdeckung des gesamten Bildschirms enthalten, der Ihr Anwendungs-Spritzbild zeigt.Bei der Abschluss des asynchronen Anrufs finden Sie diesen Splash-View-Controller und drücken Sie den erforderlichen Ansichtscontroller.

Viele Apps verwenden auf diese Weise, um die erforderlichen asynchronen Daten herunterzuladen, bevor Sie die App anzeigen.Dieser Benutzer sieht also keine leeren Bildschirme oder Mülldaten an.

Wenn etwas fehlgeschlagen ist, fehlgeschlagen wie der Fehler mit Internet Connectivity oder Serverantwortfehler usw. Zeigen Sie den Fehler auf Benutzer und führen Sie die Fehlerbehandlung gemäß Ihrer App-Logik aus.

Sie können programmgesteuert zum Root View-Controller wie

navigieren generasacodicetagpre.

Dieser Code kann in den Bedingung des Ergebnisses gelegt werden.

oder in Ihrem Weg, denke ich, dass Sie ein Segue für die Navigation an den RootViewController erstellt werden.Sie können ein Segue mit

programmgesteuert durchführen generasacodicetagpre.

Wenn Sie die AFNetworking verwenden, fügen Sie einfach eine Methode im Erfolgsblock hinzu und übergeben Sie die Antwort auf diese Methode in einem Parameter des Wörterbuchs.Überprüfen Sie Ihre Antwort in der Methode und wählen Sie den Controller, an dem Sie den Root View-Controller von dieser Methode erstellen möchten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top