2017-04-02 1 views
2

모음보기 (myHobbiesCV)의 모든 셀을 선택 취소해야하는 코드 블록을 cellForItemAt (비주얼 베이직)에 기반하여 시각적 상태를 업데이트하면서 표시합니다.)시각적 상태를 변경하는 동안 collectionView의 모든 셀 선택 취소

선택한 모든 셀이 myHobbiesArraySelected라는 문자열 배열에 추가됩니다. [Deselect All Hobbies] 버튼을 누르면 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

우우! 이 작동합니다. 빠른 질문 - 내 myHobbiesCV가 1,000 개 항목 일 경우 (질문의 목적만으로는되지 않습니다) - visibleCells는 현재 화면 상에 있지 않더라도 visibleCells가 모든 알파 상태를 변경합니까? – Joe

+0

글쎄, 콜렉션 뷰/테이블 뷰에서 셀에 대해 좀 더 자세히 읽어야합니다. 기술적으로 볼 때, iOS의 셀은 재사용 할 수 있습니다. 즉, 셀의 동일한 번들을 사용합니다. 몇 번이나 스크롤. 그래서 셀을 배열에 저장하면 안됩니다 (최상의 옵션은 인덱스 경로를 저장하는 것입니다). 따라서 "cellForIndexPath"의 논리가 맞으면 모든 셀의 가시성이 변경되어야합니다. –

+0

쿨! 이 프로필 설정 섹션의 전반적인 기능 때문에 indexPath를 저장하지 않습니다. 사용자는 여러 취미 카테고리에서 여러 취미를 선택할 수 있으므로 항목 자체를 저장하는 것이 가장 좋습니다. – Joe