在UITableView上滚动horizantal正在改变附加到TableView单元格内的scrollView的UIPageControl的位置

时间:2014-06-18 14:03:36

标签: ios objective-c uitableview uiscrollview uipagecontrol

我有一个带有动态生成的自定义单元格的tableView,其中一个自定义单元格包含一个可以垂直滚动并且页面控件附加到它的scrollView。

可以在照片中看到tableview的用户界面结构。

enter image description here

我正在刷新scrollViewDidScroll方法中页面控件的位置,如下所示。

    - (void)scrollViewDidScroll:(UIScrollView *)scrollView
{

    NSIndexPath *indexPathPageControl=[NSIndexPath indexPathForRow:0 inSection:0];
    UITableViewCell * cell = (UITableViewCell*)[self.sonDakikaTableView cellForRowAtIndexPath:indexPathPageControl];


    CGFloat xOffset = scrollView.contentOffset.x;
    CGFloat frameWidth = scrollView.frame.size.width;



    int page = floor((xOffset - frameWidth / 2) / frameWidth) + 1;

    UIPageControl *pageControl = (UIPageControl *)[cell.contentView  viewWithTag:14];
    pageControl.currentPage = page; // assigning to pagecontroll


}

当用户在scrollView中垂直滚动时,它工作得很好。

然而,当用户向下滚动tableView并且具有垂直scrollView的单元格不再可见时,整数页面变量将更新为0,当用户向上滚动并且表格视图单元格再次可见时,页面的位置控制正在重置。

如果有人可以告诉我如何防止这种情况,我将不胜感激。

提前致谢。

1 个答案:

答案 0 :(得分:0)

我添加了此代码

  • (void)scrollViewDidScroll:(UIScrollView *)_ scrollView { if(_scrollView == self.tableView)return; 在您的情况下

  • (void)scrollViewDidScroll:(UIScrollView *)_ scrollView { if(_scrollView == self.sonDakikaTableView)return;