UpageViewController ViewControlLerAfterViewControllerが1回返された後に呼び出されません
-
21-12-2019 - |
質問
すべてのステップで検証を受けてUIPageViewController
を実装しようとしています。私のコードは検証なしでうまく機能していたので、ページを使ったすべてが正しく行われているようです。これは私のコードです:
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController {
int index = [(MyViewController *) viewController index];
index--;
return [_viewModel viewControllerAtIndex:index];
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController {
BOOL isDataValid = [(MyViewController *) viewController validateData];
if (isDataValid) {
int index = [(MyViewController *) viewController index];
index++;
return [_viewModel viewControllerAtIndex:index];
}
return nil;
}
.
私の問題はステップ1を示す場合、ステップ2を準備するためにviewControllerAfterViewController
を呼び出すが、ステップ2は有効ではないので(ユーザはデータを入力する機会がない)のでNILを返しているので。ユーザーが次の画面にスワイプしようとし、NILを受信した後にあきらめないようにUIPageViewController
を呼び出すことをお勧めします。それはやりますか?
解決
uipageViewControllerの基礎となるキャッシュを持ちます。
でリセットできますpageViewController.dataSource = nil;
pageViewController.dataSource = self;
.
あなたが有効になっているページが有効になるとこれを呼び出すことができます。
他のヒント
同様の問題に直面して、次のコードを追加しました(呼び出しサブビューのみが不十分ではありません)
[self addChildViewController:vc];
[_viewCarouselContainer addSubview:vc.view];
[vc didMoveToParentViewController:self];
.
今のどちらの方法はそれぞれのスイイプ
で正しく呼ばれています- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController ;
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController ;
. 所属していません StackOverflow