多个UIPageViewController

时间:2014-12-03 08:12:34

标签: ios objective-c xcode uinavigationcontroller uipageviewcontroller

我正在使用带有UINavigationController(第一个pvc)的UIPageViewController作为根控制器。 在这个pvc实例里面,我有多个视图,我可以滚动浏览。这一切都很好。

然后我选择从其中一个视图中推进,我向下钻取到第二个pvc的水平。当我用第二个pvc滚动并到达序列的末尾时,我会自动继续滚动第一个UIPageViewController

我的问题是如何在第二个pvc滚动的那一刻禁用手势并锁定第一个pvc的滚动?

这是导航控制器堆栈

/////--UINavigationController

/////----------UIPageViewController (first instance of pvc)

/////---------------UITableViewController [ TV01 ] push here to second pvc

/////---------------UITableViewController [ TV02 ]

/////---------------UITableViewController [ TV03 ]

/////---------------------UIPageViewController (second instance of pvc)

/////---------------------------UIViewController 

/////---------------------------UIViewController

/////---------------------------UIViewController (is scrolling to TV02)

1 个答案:

答案 0 :(得分:0)

我有一个问题的解决方案,我想在这里发布我的答案。主UIPageViewController使用一些UIScrollView对象来处理滚动(至少对于transitionStyle UIPageViewControllerTransitionStyleScroll)。在推送新UIPageViewController之前,我已禁用此UIPageViewController的滚动选项。因此,您始终有一个UIPageViewController有效进行滑动。

您可以通过控制器的子视图(pageViewController.view.subviews)进行迭代来获取它。

-(void)setScrollEnabled:(BOOL)enabled forPageViewController:(UIPageViewController*)pageViewController{
    for(UIView* view in pageViewController.view.subviews){
        if([view isKindOfClass:[UIScrollView class]]){
            UIScrollView* scrollView=(UIScrollView*)view;
            [scrollView setScrollEnabled:enabled];
            return;
        }
    }
}