我有两个UICollectionView
个对象,它们都有不同的源和委托。我想使用UseLayoutToLayoutNavigationTransitions来实现“过滤器照片”外观。
虽然不起作用。当我调用UseLayoutToLayoutNavigationTransitions
时,它会更改布局,但不会更改内容。
第一张照片是第一张收藏品。一系列类别及其中包含的人。
第二张照片是我最喜欢的动画片。特定类别中的一系列人物。
最后的图片就是现在发生的事情。类别只是重新排列。
答案 0 :(得分:3)
查看
中的http://www.objc.io/issue-12/collectionview-animations.htmlUICollectionViewController实例之间的转换
部分。
它基本上向您显示您必须通过实现导航控制器委托方法手动更改数据源和委托:
- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
if ([viewController isKindOfClass:[FJDetailViewController class]]) {
FJDetailViewController *dvc = (FJDetailViewController*)viewController;
dvc.collectionView.dataSource = dvc;
dvc.collectionView.delegate = dvc;
[dvc.collectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForItem:_selectedItem inSection:0] atScrollPosition:UICollectionViewScrollPositionCenteredVertically animated:NO];
}
else if (viewController == self){
self.collectionView.dataSource = self;
self.collectionView.delegate = self;
}
}
答案 1 :(得分:2)
您的问题是在转换过程中iOS会更改数据源。请参阅我对此问题的回答How to use useLayoutToLayoutNavigationTransitions in UICollectionView?
你可以使用那里描述的相同模式:
UseLayoutToLayoutNavigationTransitions
获取布局更改