2013-06-27 23 views
27

私のアプリは、以下のように複数のビューコントローラを設定するとクラッシュすることがあります。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 

答えて

46

エラーが示すように、必要以上に多くのビューコントローラを提供しています。アレイには1つのView Controllerしか用意しないでください。次に、ページビューコントローラのdataSourceメソッドを使用して、前後のビューコントローラを適切に提供します。

+0

次のコントローラに移動するためにドラッグされるたびに、自分のユーザがどのビューコントローラに接続されているかを知りたいと思います。このため、私は - (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)previousViewControllersを完了しました:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed。しかし、これは呼び出されない。デリゲートとデータソースを正しく設定しました。 –

+0

現在のView Controllerインスタンスは、[[pageViewController viewControllers] objectAtIndex:0];のようにpageViewControllerのView Controller配列プロパティを取得することで取得できます。上記の代理人で。デリゲートが呼び出していない場合は、dataSourceを設定してデリゲートする場所を確認します。 – Zen

+0

申し訳ありませんが、私の間違い。私はコード内に1つのデータソースとデリゲートの代わりにデータソースを2回作成しました。 –

-3

iOSのUIPageViewControllerにはいくつかのバグがあります。 UIViewControllerのUIScrollView + NSArrayを代わりに使用してください! これが役立つかもしれません。 http://weijun.me/post/develop/2015-11-26

+0

私はバグだとは言いませんが、それは使いにくく、あまりカスタマイズできません。私はあなたが "ページターン"アニメーションをしたいときだけそれを使用することをお勧めしたいと思います。通常のスクロールでページスクロールビューを使用し、UIScrollViewよりもpageControlを使いたい場合は、使いやすくなります。 – moger777

関連する問題