2017-04-02 9 views
2

cellForItemAtに基づいてビジュアル状態を更新しながら、コレクションビュー(myHobbiesCV)内のすべてのセルを選択解除するコードブロックがあります。 )視覚状態を変更しながらcollectionView内のすべてのセルの選択を解除します

選択されたすべてのセルがmyHobbiesArraySelectedという文字列配列に追加されます。 [すべての趣味の選択解除]ボタンを押すと、myHobbieArraySelected配列が消去され、すべてのセルが選択されていない視覚状態に変更されます。

@IBAction func deselectAllPressed(_ sender: UIButton) { 
    let allSelected = myHobbiesCV.indexPathsForSelectedItems 
    for deselect in allSelected! { 
     print("deselected all") 
     myHobbiesCV.deselectItem(at: deselect, animated: true) 
     // This is essentially doing nothing :(
    } 
    myHobbiesArraySelected.removeAll() 
    print(myHobbiesArraySelected) 
} 

removeAllを使用して配列を消去していますが、セルの視覚的な状態はまったく変化しません。

セルのビジュアル状態を非選択に変更するにはどうすればいいですか?アレイを消去するにはどうすればよいですか?

答えて

1

表示されているすべてのセルを列挙し、その外観を変更する方法はありますか。 (とにかく選択を解除したい場合)?

for cell in collectionView.visibleCells { 
    // Change alpha 
} 
+0

Woo hoo!これは機能します。クイック質問 - 私のmyHobbiesCVが1,000アイテム長い場合(質問のためだけではありません) - visibleCellsは現在スクリーン上にいなくても、すべてのアルファ状態を変更しますか? – Joe

+0

さて、コレクションビュー/テーブルビューでは、セルについてもう少し詳しくお読みください。 - 技術的には、iOSのセルは再利用可能です。つまり、何回何回スクロールします。そのため、配列にセルを保存しないでください(最適なオプションはインデックスパスを保存することです)。したがって、 "cellForIndexPath"のロジックが正しい場合は、すべてのセルの表示を変更する必要があります。 –

+0

クール!このプロファイル設定セクションの全体的な機能のため、私はindexPathを保存しません。ユーザーは複数の趣味カテゴリから複数の趣味を選択できるため、アイテム自体を保存することをお勧めします。 – Joe

関連する問題