Domanda

Sto lavorando su più UICollectionViewControllers che mostrano tutti lo stesso contenuto con layout diversi.

Secondo Apple's CollectionViewTransition Esempio di applicazione e sessione 218 del WWDC 2013, UICollectionViewController ha una proprietà chiamata useLayoutToLayoutNavigationTransitions Ciò gestisce sostanzialmente le transizioni di navigazione interpolando "e" a "layout della vista della raccolta.

Supponiamo di averne due UICollectionViewControllers chiamato MasterCollectionViewController e DEATHCOLLECTIONVIEWCONTROLLER. Quando spingo DEATHCOLLECTIONVIEWCONTROLLER da MasterCollectionViewController, il layout è correttamente modificato, ma la visualizzazione della raccolta utilizza ancora l'origine dati dichiarata in MasterCollectionViewController.

Questo è un problema per me, perché in ciascuno di UICollectionViewControllerS, ho bisogno di riorganizzare le configurazioni di sezione/elemento. Un buon esempio di ciò che sto cercando di fare è l'applicazione di foto su iOS 7. La prima scheda di questa applicazione ha tre controller di visualizzazione: anni, raccolte e momenti. Questi controller di visualizzazione mostrano tutti lo stesso contenuto: foto. Ciò che è diverso tra ogni controller di visualizzazione è il modo in cui le foto sono raggruppate nella sezione. E il raggruppamento della sezione è a carico UICollectionViewDataSource che è un problema qui.

Se il comportamento di useLayoutToLayoutNavigationTransitions La proprietà che sto vivendo è un comportamento normale, c'è un modo per raggiungere il mio obiettivo in un approccio diverso?

Qualsiasi aiuto o commento sarebbe apprezzato.

Grazie!

È stato utile?

Soluzione

Vedo lo stesso comportamento e sono d'accordo che è meno dell'ideale.

Il problema fondamentale qui è che lo stesso UICollectionView L'istanza è condivisa/passata tra i due controller di visualizzazione. Ho sperimentato il tentativo di modificare il delegato e la dati dati del UICollectionView Ma ha incontrato vari problemi.

Alla fine, la soluzione che ho finito per adottare è stata quella di fare il maestro UICollectionViewController un delegato del UINavigationController, Implementazione:

– navigationController:willShowViewController:animated:

... usando questo per cambiare un file controllerMode Proprietà e quindi aggiungendo istruzioni switch a -collectionView:cellForItemAtIndexPath: e -collectionView:didSelectItemAtIndexPath: Per fornire il comportamento richiesto nella modalità. Ho anche aggiunto il codice a -setControllerMode: Per effettuare le modifiche allo stato richieste nel controller di visualizzazione principale.

Spero possa aiutare!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top