Infinite Scroll UIPageViewController

8

Ich versuche, ein UIPageViewController einzurichten, das unbegrenzt scrollen kann, indem Seitenansichten dynamisch über einen NSUrlConnection -Datenzug geladen werden. Ich beginne mit 3 Ansichten: prev, curr, next; und laden Sie eine zusätzliche Ansicht, wenn die erste oder letzte Ansicht im Array pageData erreicht ist.

Das Problem ist, dass ich die zusätzlichen Ansichten in viewControllerBeforeViewController oder viewControllerAfterViewController lade. Es scheint, dass diese Methoden 2-3 mal aufgerufen werden können, wenn ein einzelner Swipe zwischen Seiten durchgeführt wird. Sie können auch während einer halben Wischbewegung aufgerufen werden, die den Seitenübergang nicht beendet. Dies kann bedeuten, dass mehrere Vorladungen vorzeitig ausgeführt werden. Irgendwie vergisst der pageViewController den aktuellen Standort.

%Vor%

Diese Zeile wird unten verwendet, um eine Addition von Daten in pageViewController zu signalisieren und zu einer entsprechenden Ansicht zu gehen. Wenn ich anfange, es zu benutzen, anstatt mit einem Swipe zur vorherigen / nächsten Ansicht zu gehen, springt es zu scheinbar zufälligen Ansichten. Einmal fing ich an vorwärts zu gehen, wenn ich rückwärts wischte ...

Gibt es einen geeigneteren Speicherort für das Preload, der nur einmal nach dem Seitenübergang aufgerufen wird? Und, muss die obige Zeile aufgerufen werden, oder gibt es einen zuverlässigeren Weg, um sicherzustellen, dass es auf die richtige Seite geht? Ich bin frustriert, wenn ich versuche, das hier zu verkabeln.

%Vor%

UPDATE:

Dank der schnellen Antwort unten, die auf eine großartige Funktion verweist, war mir nicht bewusst. Hier ist die Preload-Methode, die so perfekt nur einmal nach dem Übergang aufgerufen wird. Dies scheint das unzuverlässige Herumspringen von Ansichten und das Vergessen des Ortes sehr geklärt zu haben. Danke @sha!

%Vor%     
Miro 18.12.2013, 02:30
quelle

1 Antwort

5

Ich denke, Sie müssen Ihre Ladeaufrufe in pageViewController:didFinishAnimating:previousViewControllers:transitionCompleted: handler erledigen. Diese Methode wird aufgerufen, wenn die Animation beendet und der neue ViewController aktiv ist.

    
sha 18.12.2013, 03:57
quelle