Hola chicos, estoy intentando cargar una página html, y después de la carga quiero que se ejecute change.php?lang=eng. Tengo esto ahora cuando comienza el programa:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.title = @"Treviturismo.it";
    link = @"http://www.treviturismo.it/dev/index.php";
    NSURL *url = [NSURL URLWithString:link];
    NSURLRequest *requestObj=[NSURLRequest requestWithURL:url];
    [myWebView loadRequest:requestObj];
}

Tal vez pueda hacer un SI para verificar si la página se ha cargado, luego:

link = @"http://www.treviturismo.it/dev/change.php?lang=en";
NSURL *url = [NSURL URLWithString:link];
requestObj=[NSURLRequest requestWithURL:url];
[myWebView loadRequest:requestObj];

¿Es esta una buena manera? ¡No sé qué escribir en if() para comprobar si se ha cargado la primera página! ¿Alguien puede ayudarme? ¡Gracias!

-1
Vannix 12 nov. 2011 a las 16:35

1 respuesta

La mejor respuesta

Debes escuchar el evento de carga de la página usando el protocolo UIWebViewDelegate.

- (void)viewDidLoad
{
   [super viewDidLoad];
   // init code...

   myWebView.delegate = self; // your class must implement the UIWebViewDelegate protocol

   link = @"http://www.treviturismo.it/dev/index.php";
   NSURL *url = [NSURL URLWithString:link];
   NSURLRequest *requestObj=[NSURLRequest requestWithURL:url];
   [myWebView loadRequest:requestObj];
}

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
   // if you want this method to not being called again, do this :
   webView.delegate = nil;

   // then do your request to change.php here
   link = @"http://www.treviturismo.it/dev/change.php?lang=en";
   NSURL *url = [NSURL URLWithString:link];
   requestObj=[NSURLRequest requestWithURL:url];
   [webView loadRequest:requestObj];
}
1
Emmanuel Sys 12 nov. 2011 a las 17:33
Gracias ahora lo entiendo, funciona !! Pero después de ejecutar el código en el método webViewDidFinishLoad, la página en WebView comienza a actualizarse para siempre.
 – 
Vannix
12 nov. 2011 a las 17:26
Sí, porque webViewDidFinishLoad se llama después de todas las solicitudes, por lo que también se llama después de la solicitud change.php. Actualicé el código de muestra para solucionar este problema.
 – 
Emmanuel Sys
12 nov. 2011 a las 17:32