Сбой класса uipageviewcontroller при установке нескольких контроллеров представления
Мое приложение продолжает падать, когда я устанавливаю более одного контроллера представления в моем приложении, как показано ниже.
[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
3 ответа
Как говорится в ошибке, вы предоставляете больше контроллеров представления, чем необходимо. Вы должны предоставить только 1 контроллер представления в массиве. Затем используйте методы dataSource контроллера представления страницы, чтобы обеспечить правильное представление контроллеров до и после.
хорошо, это проблема.
В вашем View Controller у вас будет что-то вроде этого.
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)
А все остальное обработайте в PageView Delegate и Data Source.
Это все :)
п.с. СВИФТ - 5.5
UIPageViewController в iOS имеет некоторые ошибки. Вместо этого используйте UIScrollView + NSArray из UIViewController! Может быть, это поможет. http://weijun.me/post/develop/2015-11-26