2012-04-02 14 views
7

Qual è la migliore pratica per implementare una vista di scorrimento orizzontale con impaginazione, con un controller di visualizzazione per pagina?Visualizzazione di scorrimento del cercapersone con i controller di visualizzazione figlio

L'esempio PageControl è ancora il modo migliore per implementarlo ora che iOS5 dispone di API per contenitori/contenitori del controller di visualizzazione?

+0

Quale approccio stai utilizzando ora? Io uso il metodo mostrato nell'esempio di PageControl di Apple.Funziona, ma ci sono ancora alcune situazioni in cui compaiono errori: Rotation releated, probabilmente a causa del fatto che ScrollView non è un ViewController. – AlexWien

+0

Ho usato un UIPageViewController con UIPageViewControllerTransitionStyleScroll, mi sono imbattuto in molti casi limite aggiungendo nuovi controller di visualizzazione all'inizio e alla fine della visualizzazione a scorrimento, il che ha reso non molto più facile da implementare rispetto all'approccio di tipo PageControl. – railwayparade

risposta

6

So che questa domanda è un po 'vecchia, ma a partire da iOS 6, UIPageViewController ha una nuova proprietà di stile di transizione denominata UIPageViewControllerTransitionStyleScroll che consente di utilizzare il controller di pagina per un caso d'uso come il proprio, con semplice scorrimento tra le pagine anziché il Transizioni di arricciatura delle pagine in stile iBooks.

Si dovrebbe anche guardare il numero di video WWDC 2012 223 - Enhancing User Experience with Scroll Views in cui in pratica passano una vecchia app che utilizza il metodo che si descrive al nuovo UIPageViewController con la transizione di stile di scorrimento.

-1

penso UIPageViewController può andare in senso orizzontale:

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

E

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

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

+0

Grazie per la risposta. UIPageViewController supporta solo i turni di pagina quando si sposta tra le pagine. Sto cercando il modo migliore per scorrere orizzontalmente tra più pagine. Con un controller per pagina per visualizzazione come l'esempio di pagecontrol – railwayparade

2

La mia risposta sarebbe che dipende dal vostro obiettivo. Se vuoi creare un'app nel modo più efficiente possibile, utilizzerei semplicemente il modo in cui viene eseguita nel codice di esempio. L'ho usato prima e lo rifarei.

D'altra parte, se il tuo obiettivo è conoscere il contenimento del controller di visualizzazione, come funziona e come usarlo, questo potrebbe essere un buon caso per provarlo. Se andate in questo modo, non dimenticate di dare un'occhiata al video WWDC "Implementazione del contenimento di UIViewController" (https://developer.apple.com/videos/wwdc/2011/).

+0

Grazie Ho visto il video di WWDC, non uno dei migliori di Apple, molto confuso. Il video discute il contenimento di UIViewController nel contesto della gestione di diverse porzioni dello schermo che è un caso diverso rispetto a una vista di scorrimento. Il problema con l'esempio di controllo della pagina è che non è aggiornato. Niente storyboard, ecc. – railwayparade

-1

Se si aggiungono le visualizzazioni del View Controller (myViewControllerOne.view) a UIScrollView - e quindi le si imposterà opportunamente in modo che appaiano orizzontalmente - quando l'utente interagisce con quella vista all'interno dei metodi di visualizzazione a scorrimento verrà visualizzato il View Controller.

Con questo intendo se si dispone di MyViewControllerOne.view come vista secondaria all'interno della vista di scorrimento, quando si scorre su quella "pagina" della vista di scorrimento e si preme il pulsante il metodo allegato (IBAction ecc.) In MyViewControllerOne verrà visualizzato essere chiamato.

Questo dovrebbe darti tutte le funzionalità di cui hai bisogno come aggiungere elementi dell'interfaccia utente, tabelle, un'altra vista di scorrimento, ecc. Questi elementi saranno controllati dal loro View Controller di origine.

Spero che questo aiuti!

+0

Grazie RachelD questo è quello che ho fatto. La domanda riguardava di più la migliore pratica. Nota: l'aggiunta di una visualizzazione di controller vista a una gerarchia di viste anothers può essere problematica. Vedi http://blog.carbonfive.com/2011/03/09/abusing-uiviewcontrollers/ – railwayparade

+0

Questo non è il modo giusto, non dovresti mai farlo in questo modo! –

2

Appare la best practice di iOS5 è continuare a utilizzare lo stesso metodo dell'esempio PageControl. Questa è una classe di controller (nota non un controller di visualizzazione). Con i controller di visualizzazione figlio per ogni pagina.

A partire da ora non esiste un modo migliore documentato per implementare una visualizzazione di scorrimento di pagina utilizzando i metodi di contenimento del controller di visualizzazione inclusi in iOS5.

Problemi correlati