2013-03-24 3 views
5

가로 UICollectionViewFlowLayout을 사용하는 UIViewControllerUICollectionView이 포함되어 있습니다. 내 UIStoryboard에서 만든 프로토 타입 셀을 사용하고 있습니다. 사용자 지정 페이징을 만들고 싶습니다. 따라서 - (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset을 사용하고 있습니다.indexPathForItemAtPoint가 항상 nil을 반환하는 이유

문제는 내가 스크롤 할 지점에서 스크롤이 멈추는 지점 인 targetContentOffset에 해당하는 indexPath을 얻으려고 할 때마다 해당 지점이 컬렉션 안에 분명히 있음에도 불구하고 콜렉션 뷰가 nil을 반환한다는 것입니다. contentSize를 봅니다.

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset 
{ 
    NSIndexPath *indexPath = [_collectionView indexPathForItemAtPoint:(*targetContentOffset)]; 
    // Do something with indexPath  
} 

내가 뭘 잘못하고 있니?

+0

? '_collectionView' 자체가 nil인지 먼저 확인하십시오. – 7usam

+0

scrollView 변수 자체를 사용하려했지만 결과는 같습니다. 나는이 메소드를 호출 할 때 양쪽이 모두 0이 아니라는 점에 긍정적이다. – DrMonkey68

답변

0

collectionView는 아직 targetContentOffset의 indexPath를 알지 못합니다.

이 위치에 레이아웃 될 항목의 속성을 제공하려면 CollectionViewLayout에 요청해야합니다. 이 같은

시도 뭔가 : 왜 당신이 바르를 사용하는

UICollectionViewLayoutAttributes *attribute = [_collectionView.collectionViewLayout layoutAttributesForElementsInRect:(CGRect){(*targetContentOffset).x, 0, 10, self.collectionView.bounds.size.height}][0]; 
관련 문제