7

我正在开发多个UICollectionViewControllers,它们都以不同的布局显示相同的内容。

根据 Apple 的CollectionViewTransition示例应用程序和 WWDC 2013 的 Session 218,UICollectionViewController有一个名为的属性useLayoutToLayoutNavigationTransitions,它基本上通过插入“从”和“到”集合视图的布局来处理导航转换。

假设我有两个UICollectionViewControllers名为MasterCollectionViewControllerDetailCollectionViewController。当我从MasterCollectionViewController推送DetailCollectionViewController时,布局已正确更改,但集合视图仍使用MasterCollectionViewController中声明的数据源。

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

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

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

谢谢!

4

1 回答 1

6

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

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

最后,我最终采用的解决方案是让 masterUICollectionViewController成为 的代表UINavigationController,实现:

– navigationController:willShowViewController:animated:

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

希望有帮助!

于 2013-11-28T08:47:47.980 回答