2017-05-17 15 views
0

デフォルトUIPageControlを使用しています。 UIPageViewControllerはプログラムによって作成されます。 dataSourcedelegateメソッドも正しく設定されています。iOS UIPageControlは左右にタップしたときの動作を変更します

iOSのホームページと同じ動作を実装しようとしています。

タップする権利は次のページに移動します。 左にタップすると前のページに移動します。

これらの動作はデフォルトです。すべて正常に動作します 最後のページで右にタップすると、最初のページに移動します。すなわち無限ループ。最初のページと左タップと同じですが、最後のページに移動します。

私はスワイプジェスチャーのviewControllerBeforeviewControllerAfterメソッドで無限ループを防いでいます。

func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? 

func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? 

所見:左にタップすると、右側にタップ

  • は、最後のページで、最初のページに、viewControllerBefore
  • を呼び出すには、
viewControllerAfterを呼び出します

このケースを処理する方法はありますか? iOSのホーム画面で予想される動作が表示されます。

答えて

0

あなたのページのインデックスが0またはn - 1の場合、前述の方法でnilを返すだけです。ここで、合計ページ数はnです。

例:

func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? { 

    // Check if index is zero, then return nil 
} 

func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? { 
     // Check if index is equal to total page count, then return nil 
} 
関連する問題