2017-05-31 2 views
1

Ich habe kein Problem für Sie zu lösen. Ich möchte nur etwas Klarheit. Lassen Sie mich zuerst erklären, was ich tue.Schließen und öffnen neue Ansicht Controller direkt nacheinander Swift 3

Ich habe einen Viewcontroller als einen Aufruf an ein PHP-Skript, um Json abzurufen. Während dieser Verarbeitung wird eine AktivitätViewController angezeigt, die den Fortschritt zeigt. Unmittelbar danach wird ein weiterer Anruf getätigt, um die Daten per E-Mail zu versenden. Vor dem E-Mail-Aufruf wird der activityViewController geschlossen und in der neuen Funktion ein neuer geöffnet, der den Fortschritt des E-Mail-Vorgangs anzeigt. Sobald dies geschehen ist, wird eine Warnung angezeigt.

All dies funktioniert, aber ich musste etwas tun, um die Viewcontroller zum nächsten ohne die "Warnung: Versuch, [ViewController] auf [ViewController] präsentieren, während bereits präsentiert" zu haben. Ich musste dem Code eine Verzögerung hinzufügen, damit der vorherige Viewcontroller vor den nächsten Öffnungsversuchen erfolgreich geschlossen werden konnte. Wie gesagt, das funktioniert reibungslos und die Verzögerung beträgt 0,3 Sekunden. Ziemlich schnell.

Was ich aber wissen möchte, könnte es möglicherweise passieren, dass der Viewcontroller auf bestimmten Geräten langsam schließt, die 0,3 Sekunden überläuft und dann den Fehler wirft?

Ich möchte nur hier um zu erfahren .. :)

ANY Informationen wird sehr geschätzt.

Antwort

1

Sie können Completion-Handler verwenden, nachdem Sie View-Controller angezeigt oder entfernt haben. Wenn Sie es verwenden, werden Ihre View-Controller diese Warnungen los und Ihre Controller werden dick und schnell ohne Timer angezeigt.

aViewController.dismiss(animated: true) { viewController.present(anotherViewController, animated: true, completion: nil) }

+0

Gut verdiente Antwort angenommen! Vielen Dank! Sieht genauso aus wie mein "Delay", aber zumindest weiß ich, dass es auf allen Geräten funktioniert! ;) –

Verwandte Themen