2012-04-02 17 views
7

Jaka jest najlepsza praktyka do implementacji poziomego widoku przewijania z stronicowaniem, z jednym kontrolerem widoku na stronę?Widok przewijania stronicowania z kontrolkami podrzędnymi

Czy jest to nadal najlepszy przykład na to, że system iOS5 ma interfejs API do kontrolowania kontenerów kontrolerów?

+0

Jakiego podejścia obecnie używasz? Używam metody pokazanej w przykładzie Apple PageControl.Działa, ale nadal istnieją sytuacje, w których pojawiają się błędy: Zwolnienie obrót, prawdopodobnie ze względu na fakt, że ScrollView nie jest ViewController. – AlexWien

+0

Użyłem UIPageViewController z UIPageViewControllerTransitionStyleScroll, natknąłem się na wiele przypadków krawędzi dodając nowe kontrolery widoku do początku i końca widoku przewijania, co spowodowało, że nie było łatwiejsze do wdrożenia niż podejście typu PageControl. – railwayparade

Odpowiedz

6

Wiem, że to pytanie jest trochę stary, ale jak z iOS 6, UIPageViewController ma nową właściwość stylu przejście nazwie UIPageViewControllerTransitionStyleScroll która pozwala używać kontrolera stronę dla przypadku użycia takich jak Twoja, z prostego przewijania między stronami zamiast Przejścia zwijania stron w stylu iBooks.

Powinieneś również obejrzeć wideo z numerem WWDC 2012 223 - Enhancing User Experience with Scroll Views, w którym zasadniczo zmieniają stare aplikacje, które używają opisanej metody, do nowego UIPageViewController ze zmianą stylu przewijania.

-1

myślę UIPageViewController może przejść poziomo:

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

I

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

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

+0

Dzięki za odpowiedź. UIPageViewController obsługuje tylko zmiany stron podczas przechodzenia między stronami. Szukam najlepszego sposobu przewijania w poziomie między wieloma stronami. Z jedną stroną na kontroler widoku jako przykład kontrolowania strony: – railwayparade

2

Moja odpowiedź będzie, że to zależy od celu. Jeśli chcesz, aby aplikacja była tak wydajna, jak to tylko możliwe, po prostu użyłbym sposobu, w jaki jest to zrobione w przykładowym kodzie. Używałem go wcześniej, i zrobiłbym to ponownie.

Z drugiej strony, jeśli Twoim celem jest poznanie mechanizmu ograniczania kontrolera widoku, sposobu jego działania i sposobu użycia, może to być dobry przypadek, aby go wypróbować. Jeśli pójdziesz tą drogą, nie zapomnij zapoznać się z wideo WWDC "Implementing UIViewController Containment" (https://developer.apple.com/videos/wwdc/2011/).

+0

Dzięki temu obejrzałem film WWDC, który nie jest jednym z najlepszych, bardzo mylących. Wideo omawia ochronę UIViewController w kontekście zarządzania różnymi częściami ekranu, która jest różna dla widoku przewijania. Problem z przykładem kontroli strony jest taki, że jest nieaktualny. Brak scenorysów itp. – railwayparade

-1

Jeśli dodasz widoki View Controllers (myViewControllerOne.view) do UIScrollView - a następnie odpowiednio oprawisz je tak, aby wyświetlały się poziomo - kiedy użytkownik wejdzie w interakcję z tym widokiem, w widoku przewijania zostaną wywołane metody z kontrolera widoku.

Mam tu na myśli, jeśli posiadasz MyViewControllerOne.view jako widok podrzędny wewnątrz widoku przewijania, gdy przewiniesz do tej "strony" widoku przewijania i naciśniesz przycisk dołączonej metody (IBAction itp.) W MyViewControllerOne będzie Zostać wezwanym.

Powinno to zapewnić użytkownikowi pełną funkcjonalność, taką jak dodawanie elementów interfejsu użytkownika, tabel, innego widoku przewijania itp. Elementy te będą kontrolowane z ich oryginalnego kontrolera widoku.

Mam nadzieję, że to pomoże!

+0

Dzięki RachelD to jest to, co zrobiłem. Pytanie dotyczyło raczej najlepszej praktyki. Zauważ, że dodanie jednego widoku kontrolek widoku do innej hierarchii widoku może być problematyczne. Zobacz http://blog.carbonfive.com/2011/03/09/abusing-uiviewcontrollers/ – railwayparade

+0

To nie jest właściwy sposób, nigdy nie powinieneś tego robić w ten sposób! –

2

Wydaje się, że najlepszą praktyką od wersji iOS5 jest pozostawanie przy użyciu tej samej metody, co w przykładzie PageControl. To jest jedna klasa kontrolera (nie obserwuj kontrolera widoku). Z kontrolkami podrzędnymi dla każdej strony.

Obecnie nie ma udokumentowanego lepszego sposobu implementacji widoku przewijania stronicowania przy użyciu metod kontrolowania kontrolera widoku zawartych w iOS5.

Powiązane problemy