TableView et image cell
Salut salut !
J'ai un petit souci avec des UITableViewCell.
Le context : deux tableView sur un même controler. Ils sont côte à côte et quand je scroll les deux scrollent en même temps.
Mes cells sont des images stockées en local. J'ai implémenté mon data source de cette manière en cherchant sur le web comment optimiser au max la fluidité de mon scroll :
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *identifier = @ImageCell;
CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:identifier];
if(cell == nil) cell = [[[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier] autorelease];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSDictionary *dictionary = nil;
if(tableView == _leftTableView) dictionary = [_leftArray objectAtIndex:indexPath.row];
else dictionary = [_rightArray objectAtIndex:indexPath.row];
UIImage *image = [UIImage imageWithContentsOfFile:dictionary[@image_path]];
dispatch_async(dispatch_get_main_queue(), ^{
if ([[tableView indexPathsForVisibleRows] containsObject:indexPath]) {
CustomCell * correctCell = (CustomCell *)[tableView cellForRowAtIndexPath:indexPath];
[correctCell.photoView setImage:image];
[correctCell setNeedsLayout];
}
});
});
return cell;
}
C'est fluide (contrairement à un chargement synchrone) mais mes cells sont mal réutilisées (quand je scroll très lentement par exemple) et de mauvaises images s'affichent ...
Une idée de comment je pourrai résoudre ça ?
Mots clés:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Essaie de positionner ton image à nil en dehors des dispatch_async ?
Tu veux dire l'image de ma cell ? Je vais essayer
Ca ne change rien. Parfois (même sans mette à nil, ma cell est vide)
Ah zut, désolé.
Dans mes souvenirs j'avais eu un soucis similaire. Initialement avec dispatch_async() que j'ai changé par la suite par des NSBlockOperation (pour d'autres raisons d'optimisation).
Grosso modo mon code ressemble à ceci :
Si ça peut aider...
Ca ne change rien ^^
Le problème vient peut-être de ma condition ?
Pour ma part je n'ai pas ce genre de condition, je fais directement :
Moi je tien à dire que je fais comme Kubernan et je n'ai pas de probleme.
mais la phrase qui m'intrigue depuis le début est :
Comment est-ce possible ? à moins que ton doit fait tout l'écran ;D je ne vois pas comment tu peux scroller 2 trucs en meme temps
En gros j'ai ça :
Deux table view embarquées dans une scrollview et je change leur position selon celle de ma scrollview.
En virant la condition ça marche je n'ai plus le problème. Par contre au premier scroll je sens comme un minuscule accrochage.
Heuu ça ne pose pas de problème des table view dans une scrollview ? Me semble avoir lu ça quelque part un jour...
J'ai rien lu de tel mais si tu retrouves je veux bien voir
Bah Google lui a déjà eu affaire à ce problème. A moins que tu ai déjà visité tout les sites
Eu là ça donne juste des questions de comment implémenter ça, moi c'est bon ça marche
Et en virant la conditions c'est good j'ai plus de soucis
Il m'avais semblé. Je dois confondre car j'ai rien trouvé dans le programming guide.
Cool !
Merci