如何实时获取collectionView的当前节号

时间:2016-09-14 03:29:59

标签: ios objective-c uiscrollview uicollectionview

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
    NSIndexPath *path = [self.collectionView indexPathForItemAtPoint:CGPointMake(self.collectionView.contentOffset.x, self.collectionView.contentOffset.y)];
    NSLog(@"sectionNumber===%ld",path.section);

// 菜单button滚动到相应的位置
   [self.menuButtonView scrollToButtonWithButtonNumber:path.section];
}

控制台一直显示“sectionNumber === 0”但实际上它应该是1到10.我不知道我在哪里犯错,更重要的是,我设置了collectionView的委托。 它浪费了我3个小时,我真的需要一些帮助。

3 个答案:

答案 0 :(得分:2)

经过半天的艰苦尝试,我终于解决了这个问题。解决这个问题的关键是CollectionView的两个委托功能:

- (void)collectionView:(UICollectionView *)collectionView willDisplaySupplementaryView:(UICollectionReusableView *)view forElementKind:(NSString *)elementKind atIndexPath:(NSIndexPath *)indexPath

- (void)collectionView:(UICollectionView *)collectionView didEndDisplayingSupplementaryView:(nonnull UICollectionReusableView *)view forElementOfKind:(nonnull NSString *)elementKind atIndexPath:(nonnull NSIndexPath *)indexPath

使用这两个委托功能,您可以正确获取当前部分。

答案 1 :(得分:1)

在scrollViewDidScroll中,您可以获得集合视图中可见单元格的所有索引路径,然后获取中间索引路径并获取它的部分。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
    NSArray *indexPaths = [self.mainImageCollection indexPathsForVisibleItems];
    NSIndexPath *middleIndexPath = [indexPaths objectAtIndex:([indexPaths count]/2)];//you must check if indexPaths >=2 or <2
    NSLog(@"indexPath : %d at Section :%d",middleIndexPath.item,middleIndexPath.section);
}

我希望这有帮助!

答案 2 :(得分:0)

希望这能帮到你

<referenceContainer name="footer-container">
<container name="footerContainer" htmlTag="div" htmlId="cart-container-id" htmlClass="cart-container" before="-">
</container>
</referenceContainer>