2010-07-20 7 views
0

Dans mon application, j'ai besoin d'afficher une image ou des images sur des cellules tableview en fonction de leur disponibilité dans la base de données. Ce que j'ai fait est que j'ai planté quatre webviews [pour montrer des images d'urls] et je les cache ou les montre en fonction de leur disponibilité.Afficher dynamiquement des images sur des cellules tableview

Il peut également y avoir un cas où il n'y a pas d'image, lorsque je masque entièrement le webviews.

Mais après un défilement aléatoire, mon application plante. De plus, en faisant défiler, il me montre les images les plus récentes. Ainsi, je suis capable de voir d'abord une image, puis après avoir fait défiler la même cellule, deux images sont dirigées l'une sur l'autre [une partie de la photo précédente est visible] et ainsi de suite. Cela peut-il être dû à la réutilisabilité des cellules? Quel est le moyen idéal de résoudre ce problème?

EDIT:

J'utilise le code suivant:

noOfPhotos = [photos_array count]; 

if(noOfPhotos > 0){ 

    commentWhenWebviewNotThere.alpha = 0.0;   //Things that are not visible when images are there 
    noOfCommentsWhenWebviewNotThere.alpha = 0.0; 
    commentsLblWhenWebviewAbset.alpha = 0.0; 

    image1.hidden = NO; 
    image2.hidden = NO; 
    image3.hidden = NO; 
    image4.hidden = NO; 

    commentsLblWhenWebview.alpha = 1.0; 
    noOfComments.alpha = 1.0; 
    comment.alpha = 1.0; 

for(NSInteger x = 0; x < noOfPhotos; x++){ 
    photoName = [photos_array objectAtIndex:x]; 

    NSString *urlAddress = [NSString stringWithFormat:@"%@",photoName]; 
    NSURL *url = [NSURL URLWithString:urlAddress];   
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];    

    if(x == 0){ 
     image1 = [[UIWebView alloc] initWithFrame:CGRectMake(10, comment.frame.origin.y - 5, 60, 60)]; 
    [image1 loadRequest:requestObj];    //Load the request in the UIWebView. 
     [self addSubview:image1]; 
    } 

    else if(x == 1){ 
     image2 = [[UIWebView alloc] initWithFrame:CGRectMake(88, comment.frame.origin.y - 5, 60, 60)]; 

    [image2 loadRequest:requestObj];    //Load the request in the UIWebView. 
     [self addSubview:image2]; 

    } 

    else if(x == 2){ 
     image3 = [[UIWebView alloc] initWithFrame:CGRectMake(169, comment.frame.origin.y - 5, 60, 60)]; 

     [image3 loadRequest:requestObj];    //Load the request in the UIWebView. 
     [self addSubview:image3]; 

    } 

    else if(x == 3){ 
     image4 = [[UIWebView alloc] initWithFrame:CGRectMake(251, comment.frame.origin.y - 5, 60, 60)]; 

     [image4 loadRequest:requestObj];    //Load the request in the UIWebView. 
     [self addSubview:image4]; 

    } 

} 
} 

else{ 
    commentWhenWebviewNotThere.alpha = 1.0; //Should be visible when images are not there 
    noOfCommentsWhenWebviewNotThere.alpha = 1.0; 
    commentsLblWhenWebviewAbset.alpha = 1.0; 

    commentsLblWhenWebview.alpha = 0.0; 
    noOfComments.alpha = 0.0; 
    comment.alpha = 0.0; 

    image1.hidden = YES; 
    image2.hidden = YES; 
    image3.hidden = YES; 
    image4.hidden = YES; 
} 

Thanx à l'avance.

+2

Je ne réponds pas à votre problème de plantage ici, mais vous n'avez pas besoin de vues Web pour afficher des images à partir d'une URL. Vous pouvez utiliser UIImageView et définir l'image à partir de l'URL. (UIImage * image = [UIImage imageWithData: [NSData dataWithContentsOfURL: [NSUrl NSURL URLWithString: MyURL]]];) ce sera beaucoup plus facile. – lukya

+1

En outre, postez du code. Cela rendra plus facile de savoir pourquoi votre application plante. – lukya

+0

Thanx lukya pour votre réponse. J'ai mis à jour ma question. Veuillez vérifier s'il vous plait. – neha

Répondre

0

couplage !!! les cellules sont réutilisées! Et si la cellule est réutilisée avant même que ces vues Web obtiennent les résultats? veuillez retirer l'opération de chargement d'image de votre cellule et faites-le dans votre contrôleur. La cellule doit avoir quatre vues d'image. Et le contrôleur devrait passer les images pour eux.

Questions connexes