我有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];
但这并不总是正确的,因为有时表格单元格显示为一半而用户正在刷第二个单元格。
答案 0 :(得分:0)
您需要询问tableview本身,给定单元格的索引路径。您可以使用此命令执行此操作:
[self.formTableView indexPathForCell:myCell];
您的案例中的另一个问题是您在单元格的集合视图中,而不在tableview本身内。所以有几种方法可以做到这一点 - 一种不错的方法是在可以访问tableview的单元格上设置委托。这有点牵扯,因此更简单的方式(在这种情况下自我是单元格对象):
UITableView *parentTableView = (UITableView*)self.superview;
NSIndexPath *cellIndexPath = [parentTableView indexPathForCell:self];
那应该做的。