Frage

Ich arbeite an mehreren UICollectionViewControllers, die alle den gleichen Inhalt mit unterschiedlichen Layouts zeigen.

Laut Apple's CollectionViewTransition Beispielantrag und Sitzung 218 von WWDC 2013, UICollectionViewController hat eine Eigenschaft namens namens useLayoutToLayoutNavigationTransitions Das kümmert sich im Grunde genommen mit den Navigationsübergängen, indem sie von "und" zu "zu" Ansichts -Layouts "und" Ansicht "interpoliert werden.

Nehmen wir an, ich habe zwei UICollectionViewControllers genannt MasterCollectionViewController und DetailCollectionViewController. Wenn ich drücke DetailCollectionViewController aus MasterCollectionViewController, Das Layout wird ordnungsgemäß geändert, aber die Sammlungsansicht verwendet die in der Datenquelle deklarierte Datenquelle MasterCollectionViewController.

Dies ist ein Problem für mich, weil in jedem von UICollectionViewControllerS, ich muss den Abschnitt/Elementkonfigurationen neu ordnen. Ein gutes Beispiel dafür, was ich versuche, ist die Fotosanwendung auf iOS 7. Die erste Registerkarte dieser Anwendung hat drei Ansichtsregler: Jahre, Sammlungen und Momente. Diese Ansichtsregler zeigen alle den gleichen Inhalt: Fotos. Was zwischen jedem Ansichtsregler unterschiedlich ist, ist, wie Fotos im Abschnitt gruppiert werden. Und Abschnittsgruppierung liegt in der Verantwortung von UICollectionViewDataSource Welches ist hier ein Problem.

Wenn das Verhalten von useLayoutToLayoutNavigationTransitions Eigenschaft, die ich erlebe, ist ein normales Verhalten. Gibt es eine Möglichkeit, mein Ziel in unterschiedlichem Ansatz zu erreichen?

Jede Hilfe oder Kommentierung wäre geschätzt.

Vielen Dank!

War es hilfreich?

Lösung

Ich sehe das gleiche Verhalten und stimme zu, dass es weniger als ideal ist.

Das grundlegende Problem hier ist das gleiche UICollectionView Die Instanz wird zwischen den beiden Ansichtsregeln geteilt/verabschiedet. Ich experimentierte mit dem Versuch, den Delegierten und die Datenquelle der zu ändern UICollectionView aber auf verschiedene Probleme geraten.

Am Ende war die Lösung, die ich am Ende einnahm, den Meister zu machen UICollectionViewController ein Delegierter der UINavigationController, Implementierung:

– navigationController:willShowViewController:animated:

... Verwenden Sie dies, um a zu wechseln controllerMode Eigenschaft und anschließend Switch -Anweisungen zu Hinzufügen -collectionView:cellForItemAtIndexPath: und -collectionView:didSelectItemAtIndexPath: das erforderliche Verhalten im Modus bereitstellen. Ich habe auch Code hinzugefügt zu -setControllerMode: Um alle erforderlichen Zustandsänderungen im Master View Controller vorzunehmen.

Ich hoffe, das hilft!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top