UICollectionView Hinzufügen von Bild zu einer Zelle

8

Ich arbeite an einem Projekt, das UICollectionView verwendet, um Daten anzuzeigen, die möglicherweise ein Bild haben oder nicht.

Ich überprüfe, ob die Image-URL nicht null ist, und füge dann ein ImageView in die Zelle ein.

%Vor%

Für die Zellen, die kein Bild haben, sollte die Zelle wie folgt aussehen: Ссылка

Einige von ihnen fügen jedoch immer noch eine ImageView mit einem zugeschnittenen Bild hinzu, was etwa so aussieht: Ссылка

Ich habe versucht, SDWebImage zu verwenden, aber das Problem immer noch nicht gelöst.

Das andere Problem ist, dass wenn ich den UICollectionView nach unten scrolle, ich einige Bilder zuerst als das oben gezeigte Bild sehen würde, und dann zu dem korrekten Bild wechseln würde, nachdem das Laden abgeschlossen ist, und ich habe keine Ahnung was ist verursacht das Problem.

Bitte helfen Sie mir, diese zwei Probleme zu lösen, ich würde wirklich für jede Hilfe zu schätzen wissen.

    
Thomas 22.05.2014, 08:20
quelle

1 Antwort

13

Zunächst ist es ziemlich gefährlich, wie Sie Bilder in Ihre Zelle einfügen. Der Grund dafür ist, dass Ihre Zellen wiederverwendet werden (z. B. beim Bildlauf oder beim Neuladen von Daten), und diese Bilder werden bei der Wiederverwendung nie entfernt. So werden Sie anfangen, sie überall zu sehen, und Sie können sogar zu dem Punkt kommen, wo Ihre Zelle mehrere Vorkommen des Bildes enthält. Hier sind zwei Möglichkeiten, dies zu tun:

  • Erster Weg (der gute Weg): Sie untergliedern Ihre UICollectionViewCell und geben der Unterklasse eine "imageView" -Eigenschaft. Dann tun Sie dies in Ihrer CustomCollectionViewCell.m-Datei:

    %Vor%

    Dann müssen Sie in Ihrem ViewController die neue Klasse Ihrer collectionViewCells wie folgt deklarieren:

    %Vor%

    Es wird sichergestellt, dass die Bilder bei der Wiederverwendung korrekt entfernt werden, und es ist viel einfacher, die Zelle in Ihrem collectionView-Delegierten einzurichten.

  • Zweiter Weg (Der schmutzige Weg), Sie entfernen die Ansichten jedes Mal, wenn Sie eine neue Zelle laden:

    %Vor%

    Dieser Weg ist viel einfacher, aber ich würde es nicht empfehlen: P

Versuchen Sie es jetzt und lassen Sie mich wissen, wie sich Ihr Fehler entwickelt.

    
Kujey 22.05.2014, 09:04
quelle