我正在研究多个 UICollectionViewControllerS以不同的布局显示相同的内容。

根据苹果的 CollectionViewTransition WWDC 2013的样本申请和会议218, UICollectionViewController 有一个称为的属性 useLayoutToLayoutNavigationTransitions 这基本上通过将“从”和“收集视图的布局”插值来处理导航过渡。

假设我有两个 UICollectionViewControllersMasterCollectionViewController详细信息CollectionViewController. 。当我推 详细信息CollectionViewControllerMasterCollectionViewController, ,布局已正确更改,但是收集视图仍然使用声明的数据源 MasterCollectionViewController.

这对我来说是一个问题,因为在每个 UICollectionViewControllerS,我需要重新排列部分/项目配置。我想做的一个很好的例子是在iOS 7上的照片应用程序。该应用程序的第一个选项卡具有三个视图控制器:年,收藏和时刻。这些视图控制器都显示相同的内容:照片。每个视图控制器之间的不同之处在于如何将照片分组为部分。分组是 UICollectionViewDataSource 这是一个问题。

如果行为 useLayoutToLayoutNavigationTransitions 我经历的财产是一种正常行为,有没有办法以不同的方法实现我的目标?

任何帮助或评论将不胜感激。

谢谢!

有帮助吗?

解决方案

我看到相同的行为,并同意它不理想。

这里的基本问题是相同 UICollectionView 实例是在两个视图控制器之间共享/传递的。我试图更改的代表和数据源 UICollectionView 但是遇到了各种问题。

最后,我最终采用的解决方案是使主人 UICollectionViewController 代表 UINavigationController, ,实施:

– navigationController:willShowViewController:animated:

...用它切换 controllerMode 属性,然后将开关语句添加到 -collectionView:cellForItemAtIndexPath:-collectionView:didSelectItemAtIndexPath: 在模式下提供所需的行为。我还添加了代码 -setControllerMode: 在主视图控制器中执行任何必需的状态更改。

希望有帮助!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top