Ich benutze eine UICollectionview
, um viele benutzerdefinierte Zellen (250 mehr oder weniger) zu zeigen.Falsche Bildladung in uicollectionviewcell beim Scrollen
Diese Zellen haben ein Hauptbild und etwas Text. Da die Bilder aus dem Internet heruntergeladen werden müssen, verwende ich die externe Bibliothek AsyncImageView
, um die Lazy-Load-Sachen zu machen.
Aber das Problem ist, dass die wiederverwendbare Eigenschaft der Zellen mich verrückt machen.
Wenn ich scroll die Bilder erscheinen in den falschen Zellen. Wie kann ich den Bildern neben dem Indexpfad ein Tag oder etwas hinzufügen, um das Problem zu vermeiden?
Vielleicht AsyncImageView
hat eine Lösung für das Problem, das ich ignoriere ...
Oder eine andere Alternative wäre eine bessere Wahl?
Irgendwelche Hinweise?
Vielen Dank im Voraus
Edit: Eine vereinfachte Version von meinem Code
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
static NSString *identifier = @"Cell";
CollectionComercioCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];
if (cell == nil){
}
else{
[[AsyncImageLoader sharedLoader] cancelLoadingImagesForTarget: cell.myImage];
}
cell.myImage.imageURL = nil;
cell.myImage.image = nil;
cell.myImage.hidden = TRUE;
cell.myImage.imageURL = [[myArray objectAtIndex:indexPath.row] getLogoUrl];
cell.myText.text = [[myArray objectAtIndex:indexPath.row] getName];
cell.myImage.hidden = FALSE;
return cell;
}
CustomCell.m
- (void)prepareForReuse
{
[super prepareForReuse];
self.myImage.image = nil;
}
zeigen Sie Ihre ZelleForRow – Joshua
haben Sie versucht, das Bild der Zelle auf Null zu setzen, bevor Sie ein neues Bild hinzufügen? Das sollte jetzt ein Bild in der Zelle zeigen – Pfitz
Du hast recht @Pfitz jetzt bleiben die Bilder in der richtigen 'Zelle' wenn ein Bildlauf langsam erfolgt. Aber wenn ich schnell scrolle, wird ein falsches Bild für eine Sekunde oder weniger angezeigt (das Bild, das auf diesem 'Indexpfad 'vor dem Scrollen war). Kann dies vermieden werden? Danke – Andoxko