2013-06-27 7 views
27

Moja aplikacja zawiesza się, gdy ustawię więcej niż jeden kontroler widoku w mojej aplikacji, jak poniżej.Klasy uipageviewcontroller powodują awarię podczas konfigurowania więcej niż jednego kontrolera widoku

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

Moje obrazy to zestaw kontrolerów widoku.

Awaria aplikacji powodująca wystąpienie następującego błędu. Nie mam pojęcia, od czego zacząć.

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 

Odpowiedz

46

Jak informuje błąd, zapewniasz więcej kontrolerów widoku niż potrzeba. Powinieneś dostarczyć tylko 1 kontroler widoku w tablicy. Następnie użyj metod dataSource kontrolera widoku strony, aby zapewnić poprawne wyświetlanie kontrolerów widoku przed i po.

+0

Chciałbym wiedzieć, na którym kontroler widoku mój użytkownik jest włączony, i zdarzenie po przeciągnięciu, aby przejść do następnego kontrolera. Do tego próbowałem przy użyciu - (void) pageViewController: (UIPageViewController *) pageViewController didFinishAnimating: (BOOL) zakończył poprzednie ViewControllers: (NSArray *) previousViewControllers transitionCompleted: (BOOL) completed. Ale to nie jest nazywane. Ustawiłem delegata i źródło danych poprawnie. –

+0

Możesz pobrać bieżącą instancję kontrolera widoku, przechodząc do właściwości array kontrolera widoku pageViewController jako [[pageViewController viewControllers] objectAtIndex: 0]; w powyżej delegata. Aby delegat nie dzwonił, sprawdź, gdzie ustawiłeś źródło danych i delegujesz. – Zen

+0

Przepraszam, mój błąd. Napisałem dwa razy źródło danych, zamiast jednego źródła danych i delegatu w kodzie. –

-3

UIPageViewController w iOS zawiera kilka błędów. Zamiast tego użyj UIScrollView + NSArray z UIViewController! Może to pomoże. http://weijun.me/post/develop/2015-11-26

+0

Nie powiedziałbym, że jest on tak wadliwy, jak jest trudny w użyciu i niezbyt dostosowywany. Zalecam używanie go tylko wtedy, gdy chcesz mieć animację "przewracania strony". Jeśli chcesz przewijać widok stronicowany z normalnym przewijaniem i funkcją pageControl niż UIScrollView jest łatwiejszy w użyciu. – moger777

Powiązane problemy