UICollectionViewController 布局到布局导航过渡



我正在研究多个UICollectionViewController,它们都以不同的布局显示相同的内容。

根据 Apple 的 CollectionViewTransition 示例应用程序和 WWDC 2013 的会话 218,UICollectionViewController 具有一个名为 useLayoutToLayoutNavigationTransitions 的属性,该属性基本上通过插入"from"和"to"集合视图的布局来处理导航转换。

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

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

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

任何帮助或意见将不胜感激。

谢谢!

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

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

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

– navigationController:willShowViewController:animated:

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

希望对您有所帮助!

相关内容

  • 没有找到相关文章

最新更新