2012-06-03 21 views
9

Estoy cargando una "página web1" en una página web y guardando su primera solicitud en una variable de instancia "webviewHistory". Luego, debo reutilizar esa vista web para cargar otra página, "página web2" (guardé su primera solicitud a "webviewHistory" también), y el historial debería comenzar ahora desde esta solicitud. El problema es que si ejecuto goBack (botón IBAcción) desde "página web2", puedo volver al historial de "página web1" y seguir. ¡Si verifico la solicitud y la comparo con la inicial guardada, funciona! pero no con las redirecciones, por ejemplo, si disparo la solicitud a www.youtube.com, la solicitud se redirecciona a m.youtube.com y la primera no se guarda como historial de navegación. ¿Cómo resolverlo?iOS uiwebview goBack control de historial

if (![webViewSocial.request.URL.absoluteString isEqualToString:self.webviewHistory]){ 
    [webViewSocial goBack]; 
    } 

Respuesta

30

UIWebviews tiene métodos de instancia que le permiten avanzar y retroceder con el historial, sin tener que rastrear la última solicitud. ¿Hay alguna razón particular por la que está guardando la última solicitud específicamente?

Código de ejemplo:

if ([webView canGoBack]) { 
    [webView goBack]; 
} 

Aquí es un proyecto que es un simple navegador UIWebView si quiere jugar con él: https://github.com/msencenb/UIWebView-Example

+0

¡Ya estoy usando este método pero necesito habilitar o deshabilitar la acción goBack dependiendo de si la solicitud es más antigua que la primera página cargada! – Jaume

+0

Ok. Creo que deberías esperar a que ocurra la redirección en la primera página (para que se cargue la primera página correcta) usando el método delegado uiwebview: webViewDidFinishLoad: luego guarda en tu variable de instancia. – Msencenb

-1

para SWIFT versión 3 de la respuesta Msencenb:

if webView.canGoBack { 
    webView.goBack() 
} 
Cuestiones relacionadas