Verwenden von UIActivityIndicatorView mit UIWebView in Swift

7

Ich versuche, Benutzern in einer App eine Aktivitätsanzeige in meiner App anzuzeigen, während eine URL in ein WebView geladen wird. Ich habe versucht, mit activity.startAnimating / activity.stopAnimating und versuchte sie in Funktionen, etc. zu spielen, aber hatte kein Glück.

Das Beste, was ich bekommen konnte, ist, dass die Aktivitätsanzeige erscheint und animiert, aber nicht aufhört zu animieren oder zu verbergen, sobald meine URL geladen ist, so dass sie sich weiter oben auf der Webseite dreht.

In anderen Situationen habe ich beim Versuch, mich um activity.startAnimating zu bewegen, das Problem "Thread 1: EXC_BAD_INSTRUCTION (code = EXC_I386_INVOP, subcode = 0x0)" festgestellt. Ich habe "Versteckt wenn gestoppt" im Attribut-Inspektor aktiviert, ich weiß, dass meine URL gültig ist, und ich habe IBOutlets für die Interface Builder-Elemente erstellt.

Bear mit mir; Ich bin relativ neu in Swift. Hier ist mein Code:

%Vor%

Und ich habe versucht, verschiedene Funktionen wie

zu verwenden %Vor%     
agwin27 01.04.2015, 22:09
quelle

5 Antworten

17

Zunächst sehe ich keine Delegation von UIWebView. Realisieren Sie Ihr Verhalten im Zusammenhang mit Delegierungsprozessen.

UIWebViewDelegate hat vier Methoden, aber nur drei:

Schnell 4

%Vor%

Schnell 3

%Vor%     
dimpiax 01.04.2015 22:50
quelle
3

Ich bin mir sicher, dass du es inzwischen herausgefunden hast, aber du musst deine UIWebView verkabeln, um ihren Delegaten durch Ziehen mit der Maus im Storyboard als UIViewController festzulegen.

    
GarySabo 15.02.2016 14:24
quelle
3

Sie müssen UIWebViewDelegate Ihrer Klasse wie folgt hinzufügen.

%Vor%

Sie müssen Ihren WebView-Delegaten auch in select in der Funktion viewDidLoad zuweisen.

%Vor%     
Jackson 19.11.2016 16:40
quelle
2

Im Folgenden finden Sie drei einfache Schritte, die ich immer in Xcode 8 / Swift 3 / iOS 10 befolge, um den Indikator UIWebView page loading:

zu implementieren

Schritt 1. Erstellen Sie in der Klasse ViewController Outlets für den Web View and Load Indicator. Zum Beispiel:

%Vor%

Diese beiden Zeilen sollten nicht leere Punkte links von ihnen haben.

Schritt 2. Im Storyboard: Ziehen Sie das WebView mit gedrückter Strg-Taste auf den ViewController und wählen Sie "delegieren" aus dem Menü. Wie GarySabo richtig darauf hingewiesen hat, ohne diesen Schritt erscheint der Indikator, funktioniert aber nicht!

Schritt 3. Fügen Sie Ihrer Klasse ViewController den folgenden Code hinzu:

%Vor%     
Nick Ivanov 06.08.2017 18:59
quelle
0

* WKWebView entspricht der Dimpiax-Antwort. Verwenden Sie WKNavigationDelegate

%Vor%     
Parion 06.04.2018 08:09
quelle