2

Ich bin neu in Swift und neu in der Codierung, also bitte vergib mir, wenn meine Frage vage ist, oder die Antwort ist offensichtlich.Kann bei Verwendung von didSelectItemAtIndexPath auf alle Zellen zugegriffen werden, die ungleich dem Indexpfad sind?

Ich habe eine CollectionView und eine Reihe von Zellen im Inneren. Wenn ich eine Zelle auswähle, möchte ich die Farbe jeder Zelle außer der ausgewählten ändern. Ich verwende die Delegate-Methode: didSelectItemAtIndexPath. Wie kann ich auf die Zellen am Indexpfad zugreifen, die nicht dem Indexpfad der ausgewählten Zelle entsprechen?

Antwort

2

Eine Möglichkeit hierzu besteht darin, dass Sie Ihren IndexPfad in einer Variablen in der Klasse speichern und Ihre Sammlungsansicht nach dem Speichern dieses IndexPfads in didSelectItemAtIndexPath erneut laden können. Überprüfen Sie danach in Ihrem cellForItemAtIndexPath, ob dieser IndexPath gespeichert ist, und ändern Sie die Farbe der Zelle.

1

Sie können die visibleCells -Eigenschaft der Sammlungsansicht verwenden, um alle sichtbaren Zellen zu erhalten. Die Eigenschaft gibt ein Array zurück, das Sie durchlaufen können, und verwendet indexPath(for:), um zu testen, ob es das ist, das Sie nicht einfärben möchten.

Dann müssen Sie sicherstellen, dass Sie andere Zellen aktualisieren, während der Benutzer scrollt, indem Sie die richtige Farbe festlegen, wenn Sie neue Zellen aus Ihren Datenquellenmethoden bereitstellen oder collectionView(_:willDisplay:forItemAt:) verwenden.

Verwandte Themen