Tengo un uiwebview que envía la URL de su página cargada a un uitableview para retener un historial de sitios visitados. Funciona muy bien, excepto que algunos sitios pausan la carga brevemente, lo que hace que se cree otra referencia de URL. Intenta ir a redmondpie.com y termino con 50 enlaces de redmondpie.com en mi lista de visitas. ¿Estoy haciendo esto mal o hay un código que pueda usar para bloquear el enlace que se está recreando una y otra vez mientras se carga la página? Supongo que la mejor opción sería algo así como si la URL existe justo al lado de la que se está creando, entonces no la cree, o algo así. Así es como está cargado ahora.

    - (void)webViewDidFinishLoad:(UIWebView *)webView {


urlField.text = [[[[self webView]request] URL] absoluteString];

{
    NSMutableArray *history = [[[NSUserDefaults standardUserDefaults]    arrayForKey:@"History"] mutableCopy];
    if (!history) {
        history = [[NSMutableArray alloc] init];
    }
    NSString *newString  = 
    [urlField.text stringByReplacingOccurrencesOfString:@"http://" withString:@""]



    urlField.text = [NSString stringWithFormat:@"%@", newString];

    [history addObject:newString];
    [[NSUserDefaults standardUserDefaults] setObject:history forKey:@"History"];

}
0
user1264599 4 abr. 2012 a las 08:09

1 respuesta

La mejor respuesta

Verifique el último objeto en la matriz para ver si es el mismo antes de agregarlo cambiando esto:

[history addObject:newString];
[[NSUserDefaults standardUserDefaults] setObject:history forKey:@"History"];

A esto:

if (![newString isEqualToString:(NSString *)[history lastObject]]) {
    [history addObject:newString];
    [[NSUserDefaults standardUserDefaults] setObject:history forKey:@"History"];
}
0
lnafziger 4 abr. 2012 a las 08:45