Probleme image "fantome" dans un UITableView
Salut à tous,
J'ai un problème bizarre dans une UITableView. Tout d'abord je donne le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
| - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(cell == nil)
cell = [self getCellContentView:CellIdentifier];
// Set background
UIImageView *imageTemp = (UIImageView *)[cell viewWithTag:1];
imageTemp.image = [UIImage imageNamed:@"image.png"] ;
// Set texts
imageTemp = (UIImageView *)[cell viewWithTag:2];
UIImage* image = [m_SuccesTexts objectAtIndex:indexPath.row];
float width = image.size.width ;
float height = image.size.height ;
CGRect ImageFrame ;
// Limiter la lageur
if(width > 170)
{
width = 170;
}
// Placer en fonction de si le texte fait une ligne ou deux
if(height > 50)
{
ImageFrame = CGRectMake(70, 35, width, height);
}
else
{
ImageFrame = CGRectMake(70, 50, width, height);
}
imageTemp.frame = ImageFrame;
imageTemp.image = image;
int test = indexPath.row ;
// Set image1
if([[m_stats objectAtIndex:indexPath.row]intValue] >= 3)
{
imageTemp = (UIImageView *)[cell viewWithTag:3];
imageTemp.image = [m_SuccesBronze objectAtIndex:indexPath.row];
}
// Set image2
if([[m_stats objectAtIndex:indexPath.row]intValue] > 10)
{
imageTemp = (UIImageView *)[cell viewWithTag:4];
imageTemp.image = [m_SuccesSilver objectAtIndex:indexPath.row];
}
// Set image3
if([[m_stats objectAtIndex:indexPath.row]intValue] > 15)
{
imageTemp = (UIImageView *)[cell viewWithTag:5];
imageTemp.image = [m_SuccesGold objectAtIndex:indexPath.row];
}
imageTemp = nil ;
return cell;
}
- (UITableViewCell *) getCellContentView:(NSString *)cellIdentifier {
CGRect CellFrame = CGRectMake(0, 0, SCREEN_WIDTH, 110);
CGRect BackgroundFrame = CGRectMake(0, 0, SCREEN_WIDTH, 110);
CGRect bronzeFrame = CGRectMake(245, 50, 55, 55);
CGRect silverFrame = CGRectMake(305, 50, 55, 55);
CGRect goldFrame = CGRectMake(365, 50, 55, 55);
UIImageView *imageTemp ;
UITableViewCell *cell = [[[UITableViewCell alloc] initWithFrame:CellFrame reuseIdentifier:cellIdentifier] autorelease];
// Initialize background
imageTemp = [[UIImageView alloc]init];
imageTemp.tag = 1;
imageTemp.frame = BackgroundFrame ;
[cell.contentView addSubview:imageTemp];
[imageTemp release];
// Initialize text
imageTemp = [[UIImageView alloc]init];
imageTemp.tag = 2;
[cell.contentView addSubview:imageTemp];
[imageTemp release];
// Initialize image1
imageTemp = [[UIImageView alloc]init];
imageTemp.tag = 3;
imageTemp.frame = bronzeFrame ;
[cell.contentView addSubview:imageTemp];
[imageTemp release];
// Initialize image2
imageTemp = [[UIImageView alloc]init];
imageTemp.tag = 4;
imageTemp.frame = silverFrame ;
[cell.contentView addSubview:imageTemp];
[imageTemp release];
// Initialize image3
imageTemp = [[UIImageView alloc]init];
imageTemp.tag = 5;
imageTemp.frame = goldFrame ;
[cell.contentView addSubview:imageTemp];
[imageTemp release];
return cell;
} |
Quand ma cellule se charge via "cellForRowAtIndexPath" je set les images avec des images contenues dans un tableau en fonction des valeurs contenues dans un autre tableau.
Code:
1 2 3 4 5 6 7
| // Si la valeur est supérieur a 3
if([[m_stats objectAtIndex:indexPath.row]intValue] >= 3)
{
// On affiche l'image dans le tableau au meme index que la cellule
imageTemp = (UIImageView *)[cell viewWithTag:3];
imageTemp.image = [m_SuccesBronze objectAtIndex:indexPath.row];
} |
J'ai set seulement la premier valeur au dessus de 3.
Le problème est que cette image s'affiche plus d'une fois, comme une image "fantome". Fantome car l'image s'affiche sans que le programme ne passe dans la condition.
Voici des images qui expliqueront un peu mieux que moi le phenomène ^^:
Sur celle ci nous somme en haut de la tableview, l'image s'affiche, et elle ne doit s'afficher qu'ici(le petit carré avec le bateau dedans) :
http://uppix.net/2/f/a/bf72e8aacafbc...bec3659d3c.png
Sur celle la l'image se réaffiche et c'est anormal( ne passe pas dans la condition qui set l'image, mauvaise image pour la cellule par rapport au tableau d'image ... de plus vous pouvez remarquer que le problème arrive sur la case chargée seulement lorsqu'on bouge la vue, cette case n'est pas chargée lors du premier affichage de la tableview puisque non-visible).
http://uppix.net/6/3/7/c0f1420302d76...865eea420d.png
Bref j'ai l'impression de m'etre un peu perdu dans les explications, mais j'espere vraiment trouvé pourquoi ce phénomène arrive alors si vous avez besoins de précision n'hésitez pas à demander svp.
Voila je vous remercie d'avance pour votre aide.