Vorspannung UIWebView auf eine noch nicht angezeigt UIViewController
Habe ich eine app, wo auf den letzten UIViewController es ist ein UIWebView... navigiert der Anwender durch die app und am Ende können Sie den übergang (modal), um die endgültige UIViewController mit einem UIWebView... in viewDidLoad ich habe die UIWebView laden der Seite.
Das problem ist, es dauert etwa 8 Sekunden zu laden, auf dieser Seite und das ärgert die Nutzer.
Wie kann ich laden Sie die UIWebView Weise vor der Zeit (wie wenn Sie die app zum ersten mal gestartet!) wenn das UIViewController hat noch gar nicht vorgelegt worden, noch?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte das gleiche problem für UIWebView innerhalb einer UIPageViewController und ich fand eine bessere Lösung.
Wenn Sie in
FirstViewController
und Sie haben Ihre webView in IhremSecondViewController
setzen dieloadHTMLString
oderloadRequest
Methode in derviewDidLoad
IhrerSecondViewController
- und call -[secondViewController.view layoutSubviews]
für start-laden in IhrerFirstViewController
.Ex:
FirstViewController
SecondViewController
Was u tun können, ist, laden Sie die html-Zeichenfolge
und wenn u Anzeige der webView laden Sie diese Inhalte in Ihrem webView
dann Ihre webview müssen nur dazu führen, dass Ihr Inhalt und nicht das laden der Daten
///Swift 2.0
Hinweis: Es funktioniert auf die gleiche Weise für die WKWebView
Nicht sicher, wie viel Arbeit, die Sie wollen, um dies zu tun, aber ich denke, man kann cache/speichern der Daten aus der URL in etwas wie ein NSDictionary, oder etwas ähnliches, mit
[NSUserDefaults standardUserDefaults]
und verwenden Sie diese Informationen, bevor Sie tatsächlich beim laden der Seite.So, laden Sie die erste mal, wenn Sie es verwenden, nachdem es gesehen worden ist, dann werden die Daten gespeichert, die mit NSUserDefaults. Wenn Sie das nächste mal auf diese Seite, laden Sie von den NSUserDefaults erste und rufen Sie die URL/API in den Boden zurück, dann update NSUserDefaults mit diesen neuen Daten.
Wenn Sie anfordern, oder ziehen Sie spezifische Informationen zu jeder Zeit, dann denke ich nicht, dass dies funktionieren wird. Wenn das der Fall ist, können Sie wahrscheinlich versuchen, die Daten zu laden/website in einer früheren view-controller (wahrscheinlich eine, die den Benutzer eine Weile, um zu navigieren) und dann senden die Daten an die webview. So etwas wie Delegierte/protocol oder vielleicht sogar NSNotificationCenter. Hoffe, das hilft.
UIWebView
ist sehr schwierig-Objekt. Einfache Antwort wäre: Nein, Sie können nicht.UIWebView
nicht laden Sie ein Dokument oder eine URL, wenn es nicht im Blick auf die Hierarchie.Versuchen Sie nicht, es zu tun im anderen thread/queue entweder.
Was Sie tun können, ist fügen Sie
UIWebView
den Blick auf Hierarchie ganz am Anfang (wie Sie bereits erwähnt haben) und dann übergeben es an die Letzte view-controller mit vorab geladenen Daten. Dies kann funktionieren, aber es ist nicht eine elegante Art und Weise.Seite Fragen ist: warum dauert es 8 Sek. um eine Seite zu laden? Vielleicht können Sie das herunterladen der Inhalte von dieser Seite früher? Ist es statisch oder dynamisch?