7

目標は、前方にのみ移動できる UIPageViewController を作成することです。UIPageViewController のコンテンツを提供するためにデータ ソースを使用しています。方向はUIPageViewControllerNavigationDirectionForwardに設定され、遷移スタイルはUIPageViewControllerTransitionStyleScrollです。

の実装

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
{
    // returns the next view controller
}

次のView Controllerを返しますが、以下は後方への移動が不可能であることを保証する必要があります

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
{
    return nil;
}

nil を返すと、(ドキュメントに記載されているように) ナビゲーションが不可能であることを示す必要があります。ただし、常に 1 ページ戻ることができます。10ページあるとしましょう。すべてのページを前方にスクロールできますが、どのページでも1ページ後方にスクロールできます。(例: 5 ページで 4 ページに戻ることができ、8 ページで 7 ページに戻ることができます。)

データ ソースを使用せずにsetViewControllers:direction:animated:completion:メソッドを使用することでこれを回避できることはわかっていますが、試行が失敗する理由を理解したいと思います。

4

2 に答える 2

4

これは、pageViewController のトランジション スタイルがスクロールに設定されている場合に得られる動作です。理由はわかりませんが、階層のどこかに挿入されているスクロール ビューと関係があります ( Instrumentsをオンにしてプロジェクトを実行しました)。トランジションが Page Curl の場合、nil を返すと前のページは表示されません。

したがって、Page Curl アニメーションに切り替えたくない場合を除き、setViewControllers:direction:animated:completion: の使用に固執していると思います。

于 2013-01-20T19:10:12.430 に答える
0

これは簡単な解決策です。プロトコルで isLeftScrollEnabled デフォルト値を false に設定するだけです: 構成可能なスクロール方向を持つ UIPageViewController

于 2019-10-13T18:04:15.487 に答える