2012-04-02 5 views
7

Was ist die beste Vorgehensweise zum Implementieren einer horizontalen Bildlaufansicht mit Blättern, mit einem Ansichtscontroller pro Seite?Durchblättern der Bildlaufansicht mit untergeordneten Ansichtscontrollern

Ist das PageControl Beispiel immer noch der beste Weg, dies jetzt zu implementieren, da iOS5 API für View Controller Container/Containment hat?

+0

Welchen Ansatz verwenden Sie jetzt? Ich benutze die Methode in Apple PageControl Beispiel gezeigt.Es funktioniert, aber es gibt immer noch einige Situationen, in denen Fehler auftreten: Die Rotation ist wahrscheinlich, da ScrollView kein ViewController ist. – AlexWien

+0

Ich habe einen UIPageViewController mit UIPageViewControllerTransitionStyleScroll verwendet. Ich habe viele Edge-Fälle kennengelernt, die am Anfang und am Ende der Scroll-Ansicht neue View-Controller hinzufügten, was die Implementierung des PageControl-Typs erheblich vereinfachte. – railwayparade

Antwort

6

Ich weiß, dass diese Frage ein wenig alt ist, aber ab iOS 6 hat UIPageViewController eine neue Übergangsstileigenschaft namens UIPageViewControllerTransitionStyleScroll, die Sie den Seitencontroller für einen Anwendungsfall wie deins verwenden können, mit einfachem Blättern zwischen den Seiten statt der iBooks-Stil Seitencurl-Übergänge.

Sie sollten auch die 2012 WWDC-Video-Nummer 223 - Enhancing User Experience with Scroll Views sehen, wo sie im Grunde eine alte App, die die von Ihnen beschriebene Methode verwendet, auf den neuen UIPageViewController mit Scroll-Stil Übergang.

-1

denke ich UIPageViewController horizontal gehen kann:

- (id)initWithTransitionStyle:(UIPageViewControllerTransitionStyle)style navigationOrientation:(UIPageViewControllerNavigationOrientation)navigationOrientation options:(NSDictionary *)options 

Und

enum { 
    UIPageViewControllerNavigationOrientationHorizontal = 0, 
    UIPageViewControllerNavigationOrientationVertical = 1 
}; 
typedef NSInteger UIPageViewControllerNavigationOrientation; 

http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIPageViewControllerClassReferenceClassRef/UIPageViewControllerClassReference.html

+0

Vielen Dank für Ihre Antwort. Der UIPageViewController unterstützt nur Seitenumdrehungen, wenn zwischen Seiten gewechselt wird. Ich suche nach der besten Möglichkeit, horizontal zwischen mehreren Seiten zu scrollen. Mit einer Seite pro View-Controller, wie das Pagecontrol-Beispiel tut – railwayparade

2

sein Meine Antwort wäre, dass es sich auf Ihr Ziel abhängt. Wenn Sie eine App so effizient wie möglich erstellen möchten, verwende ich einfach die Vorgehensweise im Beispielcode. Ich habe es vorher benutzt und würde es wieder tun.

Auf der anderen Seite, wenn Ihr Ziel ist, über Containment Containment, wie es funktioniert und wie es zu verwenden lernen, könnte dies ein guter Fall sein, es auszuprobieren. Wenn Sie diesen Weg gehen, vergessen Sie nicht, das WWDC-Video "Implementieren von UIViewController Containment" (https://developer.apple.com/videos/wwdc/2011/) zu lesen.

+0

Dank Ich sah das WWDC-Video, es ist nicht eines der besten von Apple, sehr verwirrend. Das Video behandelt die UIViewController-Umgrenzung im Zusammenhang mit der Verwaltung verschiedener Bildschirmbereiche, die sich von der Bildlaufansicht unterscheidet. Problem mit dem Beispiel der Seitensteuerung ist, dass es veraltet ist. Keine Storyboards etc. – railwayparade

-1

Wenn Sie Ihre View-Controller-Ansichten (myViewControllerOne.view) zu UIScrollView hinzufügen - und diese dann entsprechend horizontal einrahmen - wenn der Benutzer mit dieser Ansicht interagiert, werden die View-Methoden im View-Controller aufgerufen.

Damit meine ich, wenn Sie MyViewControllerOne.view als Unteransicht innerhalb Ihrer Bildlaufansicht haben, wenn Sie zu dieser 'Seite' der Bildlaufansicht blättern und den Knopf der angefügten Methode (IBAction etc) in MyViewControllerOne drücken heißen.

Dies sollte Ihnen alle Funktionen geben, die Sie benötigen, wie z. B. das Hinzufügen von UI-Elementen, Tabellen, einer anderen Bildlaufansicht usw. Diese Elemente werden vom ursprünglichen View-Controller gesteuert.

Hoffe, das hilft!

+0

Danke RachelD das ist was ich getan habe. Bei der Frage ging es mehr darum, was die beste Praxis ist. Hinweis: Das Hinzufügen einer View-Controller-Ansicht zu einer anderen View-Hierarchie kann problematisch sein. Siehe http://blog.carbonfive.com/2011/03/09/abusing-uiviewcontrollers/ – railwayparade

+0

Dies ist nicht der richtige Weg, sollten Sie es nie so machen! –

2

Es wird empfohlen, dass Best Practice ab iOS5 die gleiche Methode wie das PageControl-Beispiel verwendet. Das ist eine Controller-Klasse (beachten Sie, dass es sich nicht um einen View-Controller handelt). Mit Child-View-Controllern für jede Seite.

Ab sofort gibt es keine dokumentierte bessere Möglichkeit, eine Paging-Scroll-Ansicht mithilfe von View Controller-Containment-Methoden in iOS5 zu implementieren.