UIWebView no volverá después de cargar HTML en iOS

Tengo este problema en mi aplicación de iPhone: tengo un webView que primero se carga con una cadena HTML. Después de que el usuario click un enlace y cargue la página solicitada, la vista web no volverá cuando llame al método [UIWebView goBack]; Supongo que webView no almacena en caching la cadena HTML. ¿Hay alguna forma de que pueda convertir el caching de WebView en mi cadena HTML sin tener que savelo en un NSString yo mismo?

Puedes usar la propiedad canGoBack y si no puedes volver, recarga UIWebView con el html original. Si el usuario ha navegado hacia adelante utilizando enlaces, la propiedad canGoBack devolverá YES y se puede iniciar un goBack en UIWebView. El _htmlString es una variable de miembro que se establece cuando se inicializa UIWebView utilizando una cadena HTML. -rrh

 - (void)goBack { if (_htmlString && ![_browserWebView canGoBack]) { [_browserWebView loadHTMLString:_htmlString baseURL:nil]; return; } [_browserWebView goBack]; } 

Esto suena como que su variable de webview no está vinculada correctamente a la instancia de webview que está utilizando. Punto de interrupción en esta llamada y verifique si su variable webView es 'nil'.

Si es así, asegúrese de que su webView en su file XIB esté vinculado a una variable IBOutlet en Interface Builder. Este es un error común y algo que tiendo a olvidar al diseñar una nueva página por primera vez.

Este tutorial cubre mucho sobre cómo crear interfaces utilizando el generador de interfaces, que estoy seguro de que eres familiar, pero para aquellos que no lo son, también es útil. Tiene algunas buenas capturas de pantalla que ayudan a ilustrar lo que quiero decir al "vincular" mejor que escribir "haz clic en el ícono + y arrastra la pequeña cosa al elemento de la interfaz de usuario" 🙂

http://www.icodeblog.com/2008/07/30/iphone-programming-tutorial-connecting-code-to-an-interface-builder-view/

EDITAR

La única otra cosa que puedo pensar es que está sobreescribiendo su variable webView reinicializándola en alguna parte (ya está inicializada por el XIB) y, por lo tanto, está llamando a goBack en una vista web que no existe en la pantalla.

Intente crear una NSURLRequest desde la URL del file y use loadRequest en lugar de loadhtmlString.

 NSURL *htmlFileUrl = [[NSBundle mainBundle] URLForResource:@"index" withExtension:@"html"]; NSURLRequest *localRequest = [NSURLRequest requestWithURL:htmlFileUrl]; self.webView.delegate = self; [self.webView loadRequest:localRequest];