Es handelt sich um den UIPageViewController von TMS. So erzeug ich das Ding:
Delphi-Quellcode:
FPager:= TTMSFMXNativeUIPageViewController.Create(Self);
FPager.Parent:= Self;
FPager.Align:= TAlignLayout.alClient;
for n:= Low(FTestViews) to High(FTestViews) do
begin
FTestViews[n]:= TTestView.Create(FPager);
with FTestViews[n] do
begin
Parent:= FPager;
Align:= TAlignLayout.alClient;
Initialize;
end;
FPager.Pages.Add.View:= FTestViews[n];
end;
FPager.Initialize;
Was vielleicht auch noch wichtig ist...
Es ist tückisch die Views für alle Seiten vorab zu initialisieren. iOS schmeißt nicht angezeigte Views weg, wenn der Speicher knapp wird oder diese länger nicht aufgerufen wurden.
Der UIPageViewController erwartet dann, dass die PageViewController DataSource den View der anzuzeigenden Seite bei Bedarf neu initialisiert.
Ich habe das auch zuerst so gemacht wie Du und habe mich gewundert, warum der PageViewController sporadisch nicht zu einer vermeidlich existierenden Seite umblättert oder die App crasht. Wenn eine Seite (View) von iOS freigegeben wurde, dann liegt in deinem "Controller Array" für diese Seite ein NIL. Bekommt der PageViewController ein NIL von der DataSource, dann heißt das für ihn "erste bzw. letzte Seite" erreicht.
Da kannst eine Weile hinterherdebuggen..