2013-06-27 2 views
27

La mia app continua a bloccarsi quando ho impostato più di un controller di visualizzazione nella mia app, come di seguito.uipageviewcontroller che si arresta in modo anomalo durante l'impostazione di più di un controller di vista

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

Le mie immagini sono un array di controller di visualizzazione.

L'app si interrompe causando il seguente errore. Non ho idea da dove cominciare.

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 

risposta

46

Come dice l'errore, si forniscono più controller di visualizzazione del necessario. Dovresti fornire solo un controller di visualizzazione in un array. Quindi utilizzare i metodi dataSource del controller della visualizzazione di pagina per fornire correttamente i controller di visualizzazione prima e dopo.

+0

Desidero sapere su quale dispositivo di visualizzazione il mio utente è acceso e un evento ogni volta trascinato per passare al controller successivo. Per questo ho provato a usare - (void) pageViewController: (UIPageViewController *) pageViewController didFinishAnimating: (BOOL) finished previousViewControllers: (NSArray *) previousViewControllers transitionCompleted: (BOOL) completato. Ma questo non viene chiamato. Ho impostato correttamente il delegato e l'origine dati. –

+0

È possibile ottenere l'istanza corrente del controller di visualizzazione raggiungendo la proprietà della matrice del controller di visualizzazione di ViewController come [[pageViewController viewControllers] objectAtIndex: 0]; in sopra delegato. Per il delegato che non chiama, controlla dove si imposta il dataSource e delegato. – Zen

+0

Scusa, mio ​​errore. Ho scritto datasource due volte, invece di un'origine dati e delegato nel codice. –

-3

UIPageViewController in iOS ha alcuni bug. Usa invece UIScrollView + NSArray di UIViewController! Forse questo aiuterà. http://weijun.me/post/develop/2015-11-26

+0

Non direi che è buggy tanto quanto è difficile da usare e non molto personalizzabile. Ti consiglio di usarlo solo quando vuoi avere un'animazione "page turn". Se si desidera una visualizzazione di scorrimento paginata con scorrimento normale e una pagina di controllo di UIScrollView è più facile da usare. – moger777