2

私はSwiftに慣れていないし、コーディングに新しいので、私の質問があいまいであるか、答えが明らかであれば私を許してください。didSelectItemAtIndexPathを使用しているときに、indexpathと等しくないすべてのセルにアクセスできますか?

私は内部にcollectionViewといくつかのセルを持っています。セルを選択すると、選択したセル以外のすべてのセルの色を変更する必要があります。デリゲートメソッドdidSelectItemAtIndexPathを使用しています。選択したセルのインデックスパスと同じではないインデックスパスのセルにどうやってアクセスできますか?

答えて

2

これを行う1つの方法は、indexPathをクラスの変数に格納し、このindexPathを格納した後にdidSelectItemAtIndexPathにコレクションビューを再ロードすることです。その後、cellForItemAtIndexPathに格納されているこのindexPathを確認し、セルの色を変更します。

1

コレクションビューのvisibleCellsプロパティを使用すると、表示されているすべてのセルを取得できます。このプロパティは、反復処理が可能な配列を返します。indexPath(for:)を使用して、色付けしたくないものかどうかをテストします。

次に、データソースメソッドから新しいセルを提供するときに適切な色を設定するか、collectionView(_:willDisplay:forItemAt:)を使用して、ユーザーがスクロールするときに他のセルを更新する必要があります。

関連する問題