2016-10-07 3 views
0

コレクションビューがあり、コレクションビューのセル内に、いくつかのピクチャを表示したいscrollViewがあります。セル内のScrollViewからUICollectionViewCellのインデックスにアクセスする

Iは、ストーリーボードに私collectionviewcell内側ScrollViewを置き、次のように私の-collectionView:cellForItemAtIndexPath方法内側ScrollViewを初期化:

UIScrollView *scrollView = [cell viewWithTag:20]; 

scrollView.delegate = self; 

[scrollView setContentSize:CGSizeMake((cell.frame.size.width*images.count), scrollView.frame.size.height)]; 

scrollView.userInteractionEnabled = NO; 
[cell addGestureRecognizer:imagesScrollView.panGestureRecognizer]; 

をビューが最初にロードされたときimagesアレイからのみ第一の画像がロードされるべきであるとユーザが-scrollViewDidScrollメソッドでスクロールビューをスクロールするときに残りの画像を動的にロードする必要があります。ただし、これらの画像は、私のscrollViewがあるコレクションビューセルのインデックスに依存します。

-scrollViewDidScrollメソッドからコレクションビューセルのインデックスにアクセスするにはどうすればよいですか?

また、これは私がやろうとしていることを達成するための実行可能な方法のようですか、それともUICollectionViewCellをサブクラス化する必要がありますか?

答えて

0

サブクラス化はソリューションの1つになる可能性がありますが、UICollectionViewCellindexPathもサブビューから取得できます。次のコードは、あなたのニーズにうまく役立つでしょう。 scrollViewDidScroll:メソッドで使用してください。

UIView *superview = scrollView; 

while (![superview isKindOfClass:[UICollectionViewCell class]]) { 

    superview = superview.superview; 
} 

UICollectionViewCell *cell = (UICollectionViewCell *)superview; 
NSIndexPath *indexPath = [self.collectionView indexPathForCell:cell]; 

NSLog(@"IndexPath: %@", indexPath); 

このviewControllerの他の場所でscrollViewを使用していないことを確認してください。

+0

これは私が探していたものです。同様のことをやろうとしていましたが、 'superview'を' UICollectionViewCell'にキャストせずに、NSInvalidArgumentExceptionを取得し続けました。これを考えていたはずです。 ありがとう! – snagpal

関連する問題