目标是创建只能向前导航的UIPageViewController。我正在使用数据源来提供UIPageViewController的内容。方向设置为 UIPageViewControllerNavigationDirectionForward ,过渡样式为 UIPageViewControllerTransitionStyleScroll

实现

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
{
    // returns the next view controller
}

返回下一个 View Controller ,而以下代码应确保不可能向后导航
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
{
    return nil;
}

返回nil应该表示无法导航(如文档中所述)。但是,我总是可以向后滚动一页。假设我有10页,我可以在所有页面中向前滚动,但在任何页面上我都可以向后滚动1页。 (例如:在第5页上,我可以返回到第4页,在第8页上,我可以返回到第7页,依此类推。)

我知道我可以通过不使用数据源和使用setViewControllers:direction:animated:completion:方法来避免这种情况,但是我想了解为什么我的尝试失败了。

最佳答案

这是将pageViewController的过渡样式设置为滚动时得到的行为-我不确定为什么,但是这与将滚动 View 插入到层次结构中的某个地方有关(如果我可以看到分配的话)在打开乐器的情况下运行我的项目)。如果转换是Page Curl,那么如果返回nil,则不会显示任何先前的页面。

因此,除非您想切换到Page Curl动画,否则我认为您会坚持使用setViewControllers:direction:animated:completion:。

关于ios - UIPageViewController方向仅向前,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14426728/

10-10 20:47