确定UITableView中包含的UICollectionView的UITableViewCell是否可见

时间:2015-12-22 08:53:22

标签: ios objective-c uitableview uicollectionview uicollectionviewcell

我的UITableView包含UICollectionView,我需要确定UITableViewCell的{​​{1}}是否可见。

我尝试使用这些方法: UICollectionViewindexPathsForVisibleItems个对象,但它返回给我一个包含所有UICollectionView的数组(当只有30个单元格可见时,数组上的计数返回给我799),然后我得到了当我使用UICollectionViewCells对象的visibleCells方法返回给我相同的数组时,结果相同。

有什么方法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

有几种方法可以定义可见。也许如果细胞的边缘是可见的,那么细胞本身可以被认为是可见的。如果你想检查整个单元格是否可见,你可以尝试检查单元格的框架是否完全包含在UICollectionView的边界内。

答案 1 :(得分:0)

您没有为我们提供足够的上下文来进行猜测,但是,我可以演示UICollectionViewUITableView使用-indexPathsForVisibleItems报告正确数量的可见项目的情况:

  1. 从Github下载AFTabledCollectionView project
  2. 在Xcode中打开项目并转到AFViewController.m
  3. 将以下内容粘贴到实现中:

    - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
    {
        NSArray *items = [collectionView indexPathsForVisibleItems];
        NSLog(@"%lu", (unsigned long)items.count);
    }
    
  4. 在模拟器中运行项目,然后点按任意UICollectionView中的项目。您将在控制台中看到正在显示集合视图的正确可见项目数。