[UIWebView] ne charge pas son contenu .... sauf au reload.

YannYann Membre
juin 2014 modifié dans API UIKit #1

Bonjour à  tous,

 

Dans une application, je veux afficher le détail d'un article que je reçoit en Json. Jusque là , pas de soucis, je sais remplir mon dictionnaire avec les détails de l'article.

 

Mais quand je veux remplir ma UIWebView, elle reste désespérément vide jusqu'à  ce que je scroll l'écran assez bas pour que la UIWebView se reload et là , le contenu est bien rempli.

 

Cette UIWebView est contenue dans une UITableViewCell personnalisée via IB. Voici comment je l'alimente :

 



ActualitesContenuTableViewCell *contenuCell = [tableView dequeueReusableCellWithIdentifier:@ActualitesContenuCell forIndexPath:indexPath];
[contenuCell.txtContenu loadHTMLString:[_dicoActu objectForKey:@ActualiteTexte] baseURL:nil];
NSLog(@Text : %@", [contenuCell.txtContenu stringByEvaluatingJavaScriptFromString:@document.documentElement.innerText]);
return contenuCell;

Quand le détail de l'actualité s'affiche, le NSLog me retourne "(null)" mais quand je scroll pour que la UIWebView se reload, le NSLog me renvoie bien le contenu de l'actualité.


 


Si vous avez une idée, ou une piste, je suis preneur ;)


 


Merci.


 


Edit : Ah, et mon dictionnaire (_dicoActu) est bien alimenté, lui, dès le premier appel.


Réponses

  • YannYann Membre
    juin 2014 modifié #2

    Bon, apparemment, le problème viendrait du calcul de la taille de ma UITableViewCell.


     


    Je fais quelque chose comme ça dans heightForRowAtIndexPath :



    NSLog(@Height : %f, contenuCell.txtContenu.frame.size.height);
    return contenuCell.txtContenu.frame.size.height;

    Mais apparemment la taille de la cellule reste sur la taille de la UIWebView par défaut (que j'ai défini à  40).


     


    J'ai cette méthode :



    - (void)webViewDidFinishLoad:(UIWebView *)webView {
    CGRect frame = webView.frame;
    frame.size.height = 1;
    webView.frame = frame;
    CGSize fittingSize = [webView sizeThatFits:CGSizeZero];
    frame.size = fittingSize;
    webView.frame = frame;

    [_actualitesDetailTblView beginUpdates];
    [_actualitesDetailTblView endUpdates];
    }

    Quand je fais ça, la taille retournée dans heightForRowAtIndexPath est toujours de 40 (ce que j'ai défini dans IB), mais pourtant, quand je fais du pas à  pas, la taille calculée est de 803.


     


    Du coup, là  je me retrouve avec une UIWebView qui a manifestement la taille voulue, mais une cellule qui elle, est à  40.


    Je suis sur que ce n'est pas grand chose mais je n'arrive pas à  voir ce que j'ai oublié, merci de votre aide.


Connectez-vous ou Inscrivez-vous pour répondre.