0

프로그래밍 방식으로 UICollectionView를 만들었습니다. 그 셀은 프로그래밍 방식으로 생성 된 UILabel, UIView 및 UIImageView도 포함합니다. 이 컬렉션 뷰가 포함 된 뷰도 프로그래밍 방식으로 만들어졌습니다. 데이터 소스를 설정하고 자체적으로 위임합니다. label, view 및 image view의 userInteractionEnabled 속성도 false로 설정되었습니다. 컬렉션 뷰의 allowsMultipleSelection 속성도 true로 설정됩니다.did 프로그래밍 방식으로 만든 UICollectionView에서 DeselectItemAtIndexPath 함수를 호출하지 않습니다.

문제는 셀을 만질 때마다 didSelectItemAtIndexPath 함수가 호출된다는 것입니다. 그러나 didDeselectItemAtIndexPath 함수는 호출되지 않습니다. 나는 cell.selected 속성을 true/false로 설정하려고했지만 필요에 따라 문제를 해결하지 못했습니다.

도와주세요 !! 나는 많은 시간을 그것에 대해 검색했지만 결과는 찾지 못했습니다! 답변 해 주셔서 감사합니다.

+0

탭 제스처가 있습니까? 여기를보세요 http://stackoverflow.com/questions/16444688/uicollectionview-only-calling-didselectitematindexpath-if-user-double-taps-will –

+0

의견과 답변에 감사드립니다. 나는 매우 큰 어리석은 실수를 발견했다. 내 didselect 함수에서 내 컬렉션보기를 다시로드했습니다. 이 같은 실수에 시간을 낭비하지 않기를 바랍니다. – Rishi

답변

0

음,이 두 함수는 모두 UICollectionViewDelegate에 따라 객체에 따라 호출됩니다. 내가보기 엔 당신이 포인트를 확인하기 위해 광고 : 사용자 정의 collectionView가 잊지 마세요

  1. 생성 후

    대표 특성을 설정할 수 있습니다.
  2. 이 메서드는 대리자 개체에 구현하십시오. -collectionView:didSelectItemAtIndexPath: 또는 -collectionView:didDeselectItemAtIndexPath:YES
  3. 얼굴 결과에 UICollectionView 속성 allowsSelection을 설정하는 것을 잊지 마세요 단순이 NSLog() 출력이나 브레이크 포인트
  4. 을 넣어

주의 사항
1. UICollectionView를 호출하는 경우 -selectItemAtIndexPath:animated:scrollPosition: 또는 -deselectItemAtIndexPath:animated:과 같은 메서드는 이 아니기 때문에이 트리거되거나 알림을받지 못합니다. 기억하고 있듯이 UITableViewClass와 동일합니다.
2. UICollectionView 속성 allowsMultiplySelection을 사용하면 콜렉션 셀 상태를 전환 할 수 있습니다.
3. 요소를 만드는 위치는 중요하지 않습니다. 그냥 제대로 설정해야합니다.

희망이 도움이 될 수 있습니다.