滚动过去最后一页时,UIPageViewController崩溃

时间:2016-08-19 13:34:24

标签: ios objective-c crash uipageviewcontroller

在我的应用中,我使用UIPageViewController(PVC)UIPageViewControllerTransitionStylePageCurl转换样式和UIPageViewControllerSpineLocationMid旋转位置。所以PVC一次显示两页。

当我尝试滚动浏览最后几页时,我遇到了罕见的崩溃。日志说:

  

由于未捕获的异常而终止应用   'NSInvalidArgumentException',原因:'视图控制器的数量   提供的(0)与所请求的数量(2)不匹配   过渡”。

我认为我做错了什么,并尝试使用Apple演示项目(https://developer.apple.com/library/ios/samplecode/ZoomingPDFViewer/Introduction/Intro.html)。

崩溃也发生在那里。它很难再现,你应该几乎垂直于正常的滚动轴(垂直)滚动。 我的猜测是dataSource的方法被错误地调用并且弄乱了PVC的完整性。 我收到了这个电话订单:

2016-08-19 15:03:52.905 ZoomingPDFViewer[7469:1878917] next controller: nil
2016-08-19 15:03:53.358 ZoomingPDFViewer[7469:1878917] prev controller: <DataViewController: 0x14dd5b990>
2016-08-19 15:03:53.358 ZoomingPDFViewer[7469:1878917] prev controller: <DataViewController: 0x14dd42a50>
2016-08-19 15:03:53.373 ZoomingPDFViewer[7469:1878917] next controller: nil

因此,似乎PVC类似于同时滚动和来回滚动。

我的问题是有什么方法可以解决这个问题吗?我现在无法想到,因为dataSource的方法返回正确的数据(看起来似乎如此)。

1 个答案:

答案 0 :(得分:0)

整个“同时向两个方向滚动”的事情可能是因为弹跳效果。您是否正在对非主线程上的视图进行任何操作?

UIPageViewController是一种多样的错误(如果你做任何事情,甚至对它非常重要)。你可以在Disable bounce effect in UIPageViewController中阅读我的回答,看看你是否正在做其他问题的答案。

除此之外,我建议提交一个错误。对UIPageViewController提交错误的人越多,Apple就越有可能修复它。