使用 `UIScrollView` 获取 `UITableViewCell` indexPath
Posted
技术标签:
【中文标题】使用 `UIScrollView` 获取 `UITableViewCell` indexPath【英文标题】:Get `UITableViewCell` indexPath using `UIScrollView` 【发布时间】:2016-03-10 08:07:54 【问题描述】:我有一个UITableViewCell
,其中包含一个UICollectionView
。 UITableViewCell
还包含一个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?