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을 사용하여 배열을 지우고 있지만 셀의 시각적 상태는 전혀 변경되지 않습니다.
배열을 지울 때 셀 비주얼 상태를 선택 취소로 변경하려면 어떻게해야합니까?
우우! 이 작동합니다. 빠른 질문 - 내 myHobbiesCV가 1,000 개 항목 일 경우 (질문의 목적만으로는되지 않습니다) - visibleCells는 현재 화면 상에 있지 않더라도 visibleCells가 모든 알파 상태를 변경합니까? – Joe
글쎄, 콜렉션 뷰/테이블 뷰에서 셀에 대해 좀 더 자세히 읽어야합니다. 기술적으로 볼 때, iOS의 셀은 재사용 할 수 있습니다. 즉, 셀의 동일한 번들을 사용합니다. 몇 번이나 스크롤. 그래서 셀을 배열에 저장하면 안됩니다 (최상의 옵션은 인덱스 경로를 저장하는 것입니다). 따라서 "cellForIndexPath"의 논리가 맞으면 모든 셀의 가시성이 변경되어야합니다. –
쿨! 이 프로필 설정 섹션의 전반적인 기능 때문에 indexPath를 저장하지 않습니다. 사용자는 여러 취미 카테고리에서 여러 취미를 선택할 수 있으므로 항목 자체를 저장하는 것이 가장 좋습니다. – Joe