Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用“UIScrollView”获取“UITableViewCell”索引XPath`_Ios_Objective C_Uiscrollview_Uicollectionview_Uitableview - Fatal编程技术网

Ios 使用“UIScrollView”获取“UITableViewCell”索引XPath`

Ios 使用“UIScrollView”获取“UITableViewCell”索引XPath`,ios,objective-c,uiscrollview,uicollectionview,uitableview,Ios,Objective C,Uiscrollview,Uicollectionview,Uitableview,我有一个UITableViewCell,其中包含一个UICollectionView。UITableViewCell还包含一个UIPageControl。我想在滑动UICollectionView时更改点。我正在使用 -(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 获取当前可见的UICollectionViewCell。但我的问题是,由于UICollectionView位于UITableViewCell中,为了获取对

我有一个
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];

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

您需要询问表格视图本身,给定单元格的索引是什么。您可以使用以下命令执行此操作:

[self.formTableView indexPathForCell:myCell];
本例中的另一个问题是,您在单元格的集合视图中,而不是在tableview本身中。所以有几种方法可以做到这一点——一种很好的方法是在单元格上设置一个可以访问tableview的委托。这有点复杂,所以这里有一个更简单的方法(在本例中,self是cell对象):


这应该可以完成任务。

在uicollectionViewcell中不能有indexpath属性。并在UITableView的cellforrowatindexpath委托中设置此属性是否在每行中都有集合视图?是的,我在每行中都有集合视图,但要访问collectionViewCell,我需要tableView单元格,因为collectionView位于tableViewCell中。啊,好的,抱歉。你有CustomTableCell类,对吗?在该类中执行代码。如果您没有该类的实际标头/main,请先创建它。然后把代码放进去,你自然也会得到cell对象,作为“self”(如果你已经得到了这个,很抱歉-我可以看看整个项目,看看你是如何构建的)。好的,谢谢。我会试试看
UITableView *parentTableView = (UITableView*)self.superview;
NSIndexPath *cellIndexPath = [parentTableView indexPathForCell:self];