2010-10-19 3 views
0

J'ai donc un problème et je sais exactement de quoi il s'agit, mais je ne sais pas comment le réparer. Fondamentalement, j'ai un tableViewCell qui charge quelque chose comme ceci:Personnalisé UITableViewCell Suppression d'une sous-vue

BroadcastTableViewCell *cell = (BroadcastTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

/* 
* Other code to finish cell setup 
* 
*/ 

// Problem section 
CGRect frame; 
    frame.size.width=50; frame.size.height=70; 
    frame.origin.x=0; frame.origin.y=0; 
    AsyncImageView* asyncImage = [[[AsyncImageView alloc] 
            initWithFrame:frame] autorelease]; 
    asyncImage.tag = 999; 
    NSURL *url = [[[NSURL alloc] initWithString:[NSString stringWithFormat:@"http://image URL/%@", trimmedPath]] autorelease];  
    [asyncImage loadImageFromURL:url]; 
    [cell.contentView addSubview:asyncImage]; 

Fondamentalement, cela est un moyen de charger les images de manière asynchrone de cellules de sorte que les rouleaux de Tableview en douceur. Le problème est que lorsque je déporte une nouvelle cellule avec l'ID existant, l'image n'est pas réinitialisée et est placée sous la nouvelle. Est-ce que quelqu'un sait comment détecter cette image et l'enlever quand une nouvelle cellule est retirée?

Répondre

1

il suffit de chercher les sous-vues pour votre AsyncImageView en utilisant viewWithTag:

AsyncImageView* asyncImage = [cell.contentView viewWithTag:999]; 
if (asyncImage == nil) { 
    CGRect frame; 
    frame.size.width=50; frame.size.height=70; 
    frame.origin.x=0; frame.origin.y=0; 
    asyncImage = [[[AsyncImageView alloc] initWithFrame:frame] autorelease]; 
    asyncImage.tag = 999; 
    [cell.contentView addSubview:asyncImage]; 
} else { 
    // might want to cancel download here somehow 
} 

NSURL *url = [[[NSURL alloc] initWithString:[NSString stringWithFormat:@"http://image URL/%@", trimmedPath]] autorelease];  
[asyncImage loadImageFromURL:url]; 
+0

brillant, qui fait réellement son sens, puisque c'est la raison pour laquelle j'ajoute la balise en premier lieu XD Merci pour l'aide! – gabaum10

+0

Cela contribuera aussi à l'efficacité. :) Gagner/gagner. – gabaum10

Questions connexes