Salut à tous,

J'ai un problème bizarre dans une UITableView. Tout d'abord je donne le code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.