39

当我在我的应用程序中设置多个视图控制器时,我的应用程序不断崩溃,如下所示。

[self setViewControllers:_images direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:NULL];

我的图像是一组视图控制器。

该应用程序崩溃并显示以下错误。我不知道从哪里开始。

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'The number of view controllers provided (9) doesn't match the number required (1) for the requested transition
4

3 回答 3

75

正如错误所说,您提供的视图控制器比需要的多。您应该在数组中只提供 1 个视图控制器。然后使用页面视图控制器的 dataSource 方法正确提供前后视图控制器。

于 2013-06-27T02:54:10.507 回答
0

好的,这就是问题所在。

在您的视图控制器中,您将拥有类似的东西。

private var mainPageView : UIPageViewController!

private var arrayOfVC = [UIViewController]()

现在,如果您尝试像这样设置一组 VC(视图控制器):

   self.mainPageView.setViewControllers(arrayOfVC, direction: .forward, animated: true, completion: nil)

会有这样的错误:

'提供的视图控制器数量 (9) 与请求的转换所需的数量 (1) 不匹配

所以,要解决这个问题,你需要从一组 VC 中设置第一个 VC

self.mainPageView.setViewControllers([arrayOfVC[0]], direction: .forward, animated: true, completion: nil)

并在 Page View Delegate 和 Data Source 中处理其余部分。

就这些 :)

ps斯威夫特- 5.5

于 2021-12-06T15:52:40.940 回答
-7

UIPageViewController in iOS has some bugs. Use UIScrollView + NSArray of UIViewController instead! Maybe this will help. http://weijun.me/post/develop/2015-11-26

于 2015-11-29T05:30:56.987 回答