2017-05-17 2 views
0

J'utilise par défaut UIPageControl. UIPageViewController est créé par programme. Les méthodes dataSource et delegate sont également configurées correctement. J'essaye d'implémenter le même comportement que dans la page d'accueil d'iOS.iOS UIPageControl changer le comportement quand appuyez sur gauche et droite

Le taper à droite devrait passer à la page suivante. Taper à gauche devrait prendre à la page précédente.

Ces comportements sont définis par défaut. et tout fonctionne bien sauf lorsqu'il est tapé à droite sur la dernière page, il prend à la première page. c'est-à-dire boucle infinie. pareil pour la première page et à gauche, il faut pour la dernière page.

J'ai empêché la boucle infinie dans les méthodes viewControllerBefore et viewControllerAfter pour le mouvement de balayage.

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

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

Résultats:

  • quand on tape sur la droite, à la dernière page, les appels viewControllerBefore
  • Lorsque tapé sur la gauche, sur la première page, les appels viewControllerAfter

Est-il possible de gérer ce cas? Je vois le comportement attendu dans l'écran d'accueil iOS.

Répondre

0

Renvoyez simplement nil dans la méthode mentionnée ci-dessus lorsque l'index de vos pages est 0 ou n - 1. Où n est le nombre total de pages.

Exemple:

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 
}