uicollectionViewControllerレイアウトからレイアウトナビゲーショントランジション

StackOverflow https://stackoverflow.com/questions/19842952

質問

私は複数に取り組んでいます UICollectionViewControllerすべて異なるレイアウトで同じコンテンツを表示します。

Appleによると CollectionViewTransition WWDC 2013のサンプルアプリケーションとセッション218、 UICollectionViewController 呼ばれるプロパティがあります useLayoutToLayoutNavigationTransitions それは基本的に、「」と「」のコレクションビューのレイアウトを補間することにより、ナビゲーションのトランジションを処理します。

私が2つ持っていると仮定しましょう UICollectionViewControllers 呼び出されました MasterCollectionViewControllerdetailCollectionViewController. 。私が押すとき detailCollectionViewController から MasterCollectionViewController, 、レイアウトは適切に変更されますが、コレクションビューはまだで宣言されたデータソースを使用します MasterCollectionViewController.

これは私にとって問題です。 UICollectionViewControllerS、セクション/アイテムの構成を再配置する必要があります。私がやろうとしていることの良い例は、iOS 7の写真アプリケーションです。このアプリケーションの最初のタブには、年、コレクション、瞬間の3つのビューコントローラーがあります。これらのビューコントローラーはすべて、同じコンテンツを示しています:写真。各ビューコントローラーの違いは、写真のグループ化方法です。セクショングループ化は責任です UICollectionViewDataSource これはここで問題です。

の動作の場合 useLayoutToLayoutNavigationTransitions 私が経験しているプロパティは通常の行動ですが、さまざまなアプローチで私の目標を達成する方法はありますか?

どんな助けやコメントをいただければ幸いです。

ありがとう!

役に立ちましたか?

解決

私は同じ行動を見て、それが理想的ではないことに同意します。

ここでの基本的な問題は、同じことです UICollectionView インスタンスは、2つのビューコントローラー間で共有/渡されます。私は、の代表者とデータソースを変更しようとすることを実験しました UICollectionView しかし、さまざまな問題に遭遇しました。

最終的に、私が採用した解決策はマスターを作ることでした UICollectionViewController の代表者 UINavigationController, 、実装:

– navigationController:willShowViewController:animated:

...これを使用して切り替えます controllerMode プロパティしてから、スイッチステートメントを追加します -collectionView:cellForItemAtIndexPath:-collectionView:didSelectItemAtIndexPath: モードで必要な動作を提供します。コードも追加しました -setControllerMode: マスタービューコントローラーで必要な状態変更を行うには。

それが役立つことを願っています!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top