首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UICollectionViewCell成为hidden=YES

UICollectionViewCell成为hidden=YES
EN

Stack Overflow用户
提问于 2014-06-22 22:05:11
回答 1查看 1.9K关注 0票数 4

我正在尝试用UICollectionView实现一个“无尽的滚动”。

我通过缓冲我的数据数组来做到这一点,就像在this tutorial中一样

然后通过以下方式实现UICollectionViewDelegatedidEndDisplayingCell

代码语言:javascript
复制
- (void)collectionView:(UICollectionView *)collectionView didEndDisplayingCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath{
if (self.galleryArray.count > 0) {

    NSIndexPath *newIndexPath = indexPath;

    if (self.specialHeaderView.bannerView.scrollDirection == left) {
        newIndexPath = [NSIndexPath indexPathForItem:indexPath.row - 1 inSection:indexPath.section];
    } else if (self.specialHeaderView.bannerView.scrollDirection == right) {
        newIndexPath = [NSIndexPath indexPathForItem:indexPath.row + 1 inSection:indexPath.section];
    }

    if (newIndexPath.row == (self.galleryArray.count - 1)) {
        // user is scrolling to the right from the last item to the 'fake' item 1.
        // reposition offset to show the 'real' item 1 at the left-hand end of the collection view

        newIndexPath = [NSIndexPath indexPathForItem:1 inSection:indexPath.section];

        [self.bannerCollectionView scrollToItemAtIndexPath:newIndexPath atScrollPosition:UICollectionViewScrollPositionLeft animated:NO];
        return;

    }

    //        if (scrollView.contentOffset.x == self.collectionView.frame.size.width)  {
    if (newIndexPath.row == 0) {
        // user is scrolling to the left from the first item to the fake 'item N'.
        // reposition offset to show the 'real' item N at the right end end of the collection view

        newIndexPath = [NSIndexPath indexPathForItem:([self.galleryArray count] -2) inSection:indexPath.section];

        [self.bannerCollectionView scrollToItemAtIndexPath:newIndexPath atScrollPosition:UICollectionViewScrollPositionLeft animated:NO];

    }


}

}

问题是,每当调用didEndDisplayingCell方法,集合视图通过它的委托CellForItemAtIndexPath方法请求一个单元格时,该单元格就会隐藏起来。

下面是我的CellForItemAtIndexPath实现:

代码语言:javascript
复制
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
SpecialBannerCell *specialBannerCell = (SpecialBannerCell *)[collectionView dequeueReusableCellWithReuseIdentifier:GalleryCellIdentifier forIndexPath:indexPath];
if (specialBannerCell.hidden) {

}
Benefit *benefit = [self.galleryArray objectAtIndex:indexPath.row];
[specialBannerCell.imageBanner setImageWithURL:[NSURL URLWithString:benefit.imageIphoneUrl] placeholderImage:[UIImage imageNamed:@"photo_loader"]];
return specialBannerCell;

}

我在这里做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2014-06-23 14:07:02

所以我不知道为什么,但是当我使用UIScrollViewDelegate方法而不是didEndDisplayingCell方法时,单元格就不再隐藏了,一切都很完美。

代码语言:javascript
复制
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {

    if (self.galleryArray.count > 0) {

    NSIndexPath *indexPath = self.currentIndexPath;

    NSIndexPath *newIndexPath = indexPath;

    if (newIndexPath.row == (self.galleryArray.count - 1)) {
        // user is scrolling to the right from the last item to the 'fake' item 1.
        // reposition offset to show the 'real' item 1 at the left-hand end of the collection view

        newIndexPath = [NSIndexPath indexPathForItem:1 inSection:indexPath.section];

        self.currentIndexPath = newIndexPath;

        [self.bannerCollectionView scrollToItemAtIndexPath:newIndexPath atScrollPosition:UICollectionViewScrollPositionLeft animated:NO];
        return;

    }

    if (newIndexPath.row == 0) {
        // user is scrolling to the left from the first item to the fake 'item N'.
        // reposition offset to show the 'real' item N at the right end end of the collection view

        newIndexPath = [NSIndexPath indexPathForItem:([self.galleryArray count] -2) inSection:indexPath.section];

        self.currentIndexPath = newIndexPath;

        [self.bannerCollectionView scrollToItemAtIndexPath:newIndexPath atScrollPosition:UICollectionViewScrollPositionLeft animated:NO];

    }


}

}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24352030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档