2009-12-03 4 views
0

Je tente de charger une seule image dans la cellule de tableau groupée. J'ai trouvé un morceau de code sur internet et l'ai modifié. Le code original utilise UIViews pour afficher l'image, ce qui n'est pas ce dont j'ai besoin, mais le code original fonctionne bien sûr. SVP, aidez-moi à faire en sorte que ce code fonctionne pour afficher une image dans une cellule Sigle pour une vue groupée. Mon TableView a seulement une ligne et il a le style UITableViewCellStyleDefault.Charge d'image asynchrone dans la cellule TableView

Original Code

Voici ma méthode modifiée, c'est la méthode de base.

- (void)connectionDidFinishLoading:(NSURLConnection*)theConnection 
{ 
    [connection release]; 
    connection=nil; 

    UIImage *img = [UIImage imageWithData:data]; 
    self.image = img; 

    self.frame = self.bounds; 
    [self setNeedsLayout]; 

    [data release]; 
    data=nil; 
} 

Voilà comment je l'utilise pour afficher l'image dans ma méthode TableView Cell cellForRowAtIndexPath.

CGRect frame; 
frame.size.width=75; frame.size.height=75; 
frame.origin.x=0; frame.origin.y=0; 
AsyncImageView* asyncImage = [[[AsyncImageView alloc] initWithFrame:frame] autorelease]; 
[asyncImage loadImageFromURL:imageURL]; 
cell.imageView.image = asyncImage.image; 
+0

Mon commentaire est qu'il suffit d'ajouter asynchrone dans la cellule à la place de l'image de l'asynchrone comme ceci [cellule addSubview: asyncImage]; A la place, cette ligne cell.imageView.image = asyncImage.image; –

Répondre

0

Dans ce code affiché, l'image du AsyncImageView ne soit pas réglé qu'après la connexion se termine le chargement et il crée en fait l'image. Le problème est, vous définissez son image dans la cellule immédiatement. Ça ne va pas marcher!

Vous allez vouloir créer une classe de cellule personnalisée (sous-classe UITableViewCell) et utiliser cette cellule dans votre table. Il y a beaucoup d'exemples de code montrant comment utiliser des cellules personnalisées et les exposer avec des vues. Au lieu d'utiliser ImageView standard de UITableViewCell, créez votre propre mise en page et utilisez une image AsyncImageView pour afficher votre image. Alors ça devrait marcher.

+0

Eh bien, je sais comment créer une cellule personnalisée en utilisant IB, puis l'insérer dans ma ligne de table, mais en quoi cela sera-t-il différent de l'approche standard de UTTableViewCell? –

+0

C'est différent simplement parce que vous pouvez utiliser votre classe AsyncImageView pour l'image. Si vous utilisez la norme UITableViewCell, vous êtes bloqué avec un UIImageView normal. –

Questions connexes