我正在处理多个 UICollectionViewController
,它们都以不同的布局显示相同的内容。
根据 Apple 的 CollectionViewTransition 示例应用程序和 WWDC 2013 的 Session 218,UICollectionViewController
有一个名为 useLayoutToLayoutNavigationTransitions
的属性,它基本上通过插值处理导航转换'from' 和 'to' Collection View 的布局。
假设我有两个 UICollectionViewControllers
,名为 MasterCollectionViewController 和 DetailCollectionViewController。当我从 MasterCollectionViewController 推送 DetailCollectionViewController 时,布局已正确更改,但 Collection View 仍使用在中声明的数据源MasterCollectionViewController。
这对我来说是个问题,因为在每个 UICollectionViewController
中,我需要重新排列部分/项目配置。我正在尝试做的一个很好的例子是 iOS 7 上的照片应用程序。这个应用程序的第一个选项卡有三个 View Controller :年份、收藏和时刻。这些 View Controller 都显示相同的内容:照片。每个 View Controller 之间的不同之处在于照片在部分中的分组方式。部分分组是 UICollectionViewDataSource
的责任,这是这里的一个问题。
如果我遇到的 useLayoutToLayoutNavigationTransitions
属性的行为是正常行为,是否有其他方法可以实现我的目标?
如有任何帮助或评论,我们将不胜感激。
谢谢!
最佳答案
我看到了相同的行为,并且同意它不太理想。
这里的根本问题是相同的 UICollectionView
实例在两个 View Controller 之间共享/传递。我尝试更改 UICollectionView
的委托(delegate)和数据源,但遇到了各种问题。
最后,我最终采用的解决方案是让master UICollectionViewController
成为UINavigationController
的委托(delegate),实现:
– navigationController:willShowViewController:animated:
...使用它来切换 controllerMode
属性,然后将 switch 语句添加到 -collectionView:cellForItemAtIndexPath:
和 -collectionView:didSelectItemAtIndexPath:
在该模式下提供所需的行为。我还在 -setControllerMode:
中添加了代码,以在主视图 Controller 中执行任何所需的状态更改。
希望对您有所帮助!
关于ios - UICollectionViewController 布局到布局的导航转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19842952/