使用 `UIScrollView` 获取 `UITableViewCell` indexPath

Posted

技术标签:

【中文标题】使用 `UIScrollView` 获取 `UITableViewCell` indexPath【英文标题】:Get `UITableViewCell` indexPath using `UIScrollView` 【发布时间】:2016-03-10 08:07:54 【问题描述】:

我有一个UITableViewCell,其中包含一个UICollectionViewUITableViewCell 还包含一个UIPageControl。我想在UICollectionView 被刷卡时更改点。我正在使用

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

获取当前可见的UICollectionViewCell。但我的问题是,由于UICollectionView 位于UITableViewCell 中以获取对collectionView 的引用,因此我需要当前表视图的indexPAth,其中正在滑动集合单元格。我该怎么做?

我想这样做:

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

    // Change the dots
    CustomTableCell *tableCell = [self.currentTable cellForRowAtIndexPath:_tablecellIndex];

    NSInteger currentIndex = tableCell.currentCollectionView.contentOffset.x / tableCell.currentCollectionView.frame.size.width;
    tableCell.currentPageControl.currentPage = currentIndex;

但是我如何获得 _tablecellIndex?

我试过了:

NSArray *indexes = [self.currentTable visibleCells];
_tablecellIndex = indexes[0];

但这并不总是正确的,因为有时表格单元格显示一半并且用户正在滑动第二个单元格。

【问题讨论】:

你不能在 uicollectionViewcell 中拥有 indexpath 的属性。并在 UITableView 的 cellforrowatindexpath 委托中设置此属性 每一行都有收藏视图吗? 是的,我在每一行都有 【参考方案1】:

您需要询问 tableview 本身,给定单元格的索引路径是什么。你可以用这个命令来做到这一点:

[self.formTableView indexPathForCell:myCell];

您的另一个问题是您在单元格的集合视图中,而不是在表格视图本身中。所以有几种方法可以做到这一点 - 一种很好的方法是在可以访问 tableview 的单元格上设置一个委托。这有点涉及,所以这里有一个更简单的方法(在这种情况下,self 是单元对象):

UITableView *parentTableView = (UITableView*)self.superview;
NSIndexPath *cellIndexPath = [parentTableView indexPathForCell:self];

这应该可以完成工作。

【讨论】:

但是要访问 collectionViewCell 我需要 tableView 单元格,因为 collectionView 在 tableViewCell 中。 好吧,对不起。你有 CustomTableCell 类,对吧?做那个类的代码。如果您没有该类的实际标题/主目录,请先创建它。然后把代码放在那里,你自然也会拥有单元格对象,作为“自我”(如果你已经得到了这个,我很抱歉——我可以看看整个项目,看看你是如何构建它的) . 好的,谢谢。我试试看

以上是关于使用 `UIScrollView` 获取 `UITableViewCell` indexPath的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollView 毫不拖延地获取 contentOffset?

在 UIScrollView 中获取 UIImage 可见部分的正确坐标

通过 UITapGestureRecognizer 获取 UIScrollView 中的触摸点

滚动后如何获取 UIScrollView 的 CGRect?

获取 UIScrollView 中可见视图之外的 UIButtons 的框架/原点

Objective-C:从 UIScrollView 获取缩放的裁剪图像