2017-05-17 3 views
0

Ich verwende Standard UIPageControl. UIPageViewController wird programmgesteuert erstellt. Die Methoden dataSource und delegate sind ebenfalls korrekt konfiguriert.iOS UIPageControl ändern Verhalten bei Tippen links und rechts

Ich versuche, das gleiche Verhalten wie in der iOS-Homepage zu implementieren.

Tippen nach rechts sollte auf die nächste Seite gehen. Tippen nach links sollte zur vorherigen Seite führen.

Diese Verhaltensweisen sind Standard. und alles funktioniert gut außer wenn direkt auf der letzten Seite angetippt, dauert es auf der ersten Seite. dh Endlosschleife. Gleiches gilt für die erste Seite und das linke Tippen, es dauert bis zur letzten Seite.

Ich habe Endlosschleife in den viewControllerBefore und viewControllerAfter Methoden für Swipe Geste verhindert.

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

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

Befund:

  • Wenn auf der rechten Seite geklopft, auf der letzten Seite, ruft viewControllerBefore
  • Wenn auf der linken Seite geklopft, auf der ersten Seite, ruft viewControllerAfter

Gibt es diesen Fall überhaupt? Ich sehe das erwartete Verhalten auf dem iOS-Startbildschirm.

Antwort

0

Geben Sie einfach nil in der oben genannten Methode zurück, wenn der Index Ihrer Seiten entweder 0 oder n - 1 ist. Wobei n die Gesamtzahl der Seiten zählt.

Beispiel:

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 
} 
Verwandte Themen