Reputation: 1819
My app keeps crashing, when I set more than one view controller in my app, like below.
[self setViewControllers:_images direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:NULL];
My images is an array of view controllers.
The app crashes saying the following error. I have no idea where to start.
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
Upvotes: 43
Views: 23685
Reputation: 827
ok, this is the problem.
In your View Controller, you will have something like this.
private var mainPageView : UIPageViewController!
private var arrayOfVC = [UIViewController]()
now, if you try to set an array of VC (View Controllers) like this:
self.mainPageView.setViewControllers(arrayOfVC, direction: .forward, animated: true, completion: nil)
There will be an error something like this:
'The number of view controllers provided (9) doesn't match the number required (1) for the requested transition
So, to fix this problem you need to set first VC from an array of VC's
self.mainPageView.setViewControllers([arrayOfVC[0]], direction: .forward, animated: true, completion: nil)
And handle the rest in Page View Delegate and Data Source.
That is all :)
p.s. SWIFT - 5.5
Upvotes: 1
Reputation: 11
UIPageViewController in iOS has some bugs. Use UIScrollView + NSArray of UIViewController instead! Maybe this will help. http://weijun.me/post/develop/2015-11-26
Upvotes: -7
Reputation: 3117
As the error says,you are providing more view controllers than needed. You should provide only 1 view controller in an array. Then use page view controller's dataSource methods to provide before and after view controllers properly.
Upvotes: 82