UpageViewController ViewControlLerAfterViewControllerが1回返された後に呼び出されません

StackOverflow https://stackoverflow.com//questions/25016453

  •  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 ;
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top