在UIcollectionview中获取对某个单元格的引用

时间:2014-08-19 10:02:28

标签: ios objective-c

我试图获取对集合视图中第一个单元格的引用以便移动它(为了某些效果)。

首先,您可以移动集合内的某个单元格吗?

第二,我现在如何检查它是否在可见的矩形上? (细胞可重复使用)。

错误:当我这样做时,我将索引路径设置为非零时出现错误

-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    UICollectionViewCell *cell = [self.collectionView cellForItemAtIndexPath:4];//E
    CGRect cellRect = cell.frame;
    NSLog(@"%f",cellRect.origin.y);



}

"在ARC"。

中不允许隐式转换int

当它设置为0时,即使单元格在屏幕外,我总是得到0的位置。

我想我错过了获得第一个细胞的正确方法..

2 个答案:

答案 0 :(得分:7)

您应该创建NSIndexPath的实例以使用cellForItemAtIndexPath

示例

-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    NSIndexPath *indexPath = [NSIndexPath indexPathForItem:4 inSection:0];
    UICollectionViewCell *cell = [self.collectionView cellForItemAtIndexPath:indexPath];
    CGRect cellRect = cell.frame;
}

答案 1 :(得分:2)

Swift 3版本代码:基于Luca Bartoletti回答

func scrollViewDidScroll(scrollView: UIScrollView) {

    let indexPath = IndexPath(item: 4, section: 0)
    var cell = self.collectionView.cellForItem(at: indexPath)
    var cellRect = cell.frame
}