2016-10-05 8 views
3

가로 스크롤과 페이징을 사용하는 UICollectionView이 있습니다. 다음 또는 이전 페이지로 처음 스크롤하거나 스크롤 방향을 왼쪽에서 오른쪽으로 변경하면 cellForItemAtIndexPath에있는 indexPath.row 값이 1이 아닌 3으로 변경됩니다. 그러면 올바르게 작동합니다. CollectionView은 문제없이 작동합니다. iOS 9.이 문제는 iOS에서 발생합니다. 10. 감사합니다.UICollectionView cellForItemAt iOS 10에서 indexPath가 행 인덱스를 건너 뜁니다.

+0

"3으로 변경"이라고 말하면 사용자가 의미하는 것이 분명하지 않습니다. 전혀 색인을 요구하지 않는다는 것을 의미합니까? 또는 당신을 놀라게하는 순서로 색인을 요청 받았습니까? –

+0

더 나은 이해를 위해 동영상 https://www.youtube.com/watch?v=BTaD_InGt6g&feature=youtu.be를 추가했습니다. 문제는 iOS 10에서만 발생합니다. –

+0

아마 페이지 크기를 잘못 계산했을 것입니다. 몇 가지 코드가 없으면 어떻게 도와야하는지 명확하지 않습니다. 코드를 추적하고 호출되는 데이터 소스 메쏘드와 어떤 값을 정확하게 볼 수 있어야합니다. 콜렉션 뷰에서 새로운 프리 페치 동작에 놀랐다고 생각합니다 (콜렉션 뷰는 이제 반드시 보이지 않는 셀을 요청합니다). –

답변

2

UICollectionView의 새로운 프리 페치 기능에 문제가있었습니다. 프리 페칭을 사용하지 못하게하면 문제가 해결됩니다.

if #available(iOS 10.0, *) {collectionView.isPrefetchingEnabled = false} 
0

가능한 케이스 :

당신이 당신의 collectionView에 페이징을 사용하고, 당신의 선언으로, 1 페이지 3 개 세포를 포함하기 때문에

. 따라서 1 페이지 이동하면 왼쪽의 셀에서 인덱스를 가져 오기 때문에 셀의 인덱스는 3만큼 이동합니다.

예. 셀> 페이지 1 : [0..1..2] 페이지 2 : [3..4..5]

+0

페이지에 하나의 셀만 사용합니다. iOS 9에서 완벽하게 작동합니다. 여기에서 캡처 한 iOS 10의 문제 : https://www.youtube.com/watch?v=BTaD_InGt6g&feature=youtu.be. –

+0

비디오로 컬렉션보기가 해당 페이지에 올바른 셀을 표시하고 있음을 표시하지 않습니다. 즉, 6 페이지가 6 번 셀을 보여주고 있다고 판단 할 수 없습니다. 셀이 올바르지 않아 "cellForItemAtIndexPath"가 올바른 값을 반환 할 수 없습니다. 그런데'collectionView.visibleCells'를 사용하여 어떤 셀이 표시되는지 확인하는 것이 좋습니다. 그리고 "cellForItemAtIndexPath"로 그 셀을 생성 할 때 그 셀에'TAG '를 추가 할 수 있습니다. 행 번호를 표시하려면 태그 번호를 사용하십시오. 또는 작성한 왼쪽/오른쪽 단추의 메서드에 논리적 인 오류가있을 수 있습니다. – KTang