2015-07-28 11 views
5

Nel mio controller ho una chiamata a WKWebViewInstance.loadRequest (url). Se non c'è Internet disponibile, voglio caricare un messaggio di errore in WKWebView.Carica errore personalizzato htmlString quando WKWebView loadRequest non riesce

Ho scoperto che

func webView(webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: NSError) 

viene chiamato quando una navigazione WKWEbView fallisce senza connessione a internet. Quando faccio la chiamata webView.loadHtmlString() all'interno del metodo delegato sopra, non succede nulla.

Come rilevare l'assenza di connessione di rete mentre viene eseguita la richiesta di navigazione WKWEbView e caricare invece un messaggio di errore fisso in visualizzazione Web?

Il mio codice metodo delegato è

func webView(webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: NSError) { 
    webView.stopLoading() 
    webView.loadHTMLString(Constants.OfflineHtmlString!,baseURL: nil) 
} 

risposta

6

in caso di necessità è quella di visualizzare informazioni di errore per l'utente quando non è collegato ad internet,

È possibile controllare se si è connessi a Internet anche prima del caricamento la richiesta; Reachability è un popolare API che di solito aiuta a controllarlo. Sembra esserci un rapido porting di esso qui https://github.com/ashleymills/Reachability.swift

Mi raccomando di perseguire l'opzione sopra; Nel caso in cui si desideri comunque consentire che si guasti e quindi visualizzare l'errore, verificare la correttezza del proprio OfflineHtmlString e verificare il codice di errore prima di caricare OfflineHtmlString;

Non so se la stringa html è valida; A condizione che sia valido, vorrei fare qualcosa di simile in basso;

func webView(webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: NSError) { 
    if(error.code == NSURLErrorNotConnectedToInternet){ 
     webView.loadHTMLString(Constants.OfflineHtmlString!,baseURL: nil) 
    } 
} 
+0

Grazie per il suggerimento. Voglio visualizzare un messaggio di errore per qualsiasi errore (non solo assenza di Internet). Avrei dovuto accennare a quello in questione. chiamare loadHTMLString in didFailProvisionalNavigation risulta per me un no-op. Il codice viene eseguito ma non succede nulla. Ho provato a interrompere il caricamento corrente di webView prima della chiamata loadHTMLString, ma ho sempre lo stesso risultato – shrutim

Problemi correlati