具有不同数据源的UICollectionView UseLayoutToLayoutNavigationTransitions

时间:2014-02-19 11:07:13

标签: ios ios7 xamarin uicollectionview

我有两个UICollectionView个对象,它们都有不同的源和委托。我想使用UseLayoutToLayoutNavigationTransitions来实现“过滤器照片”外观。

虽然不起作用。当我调用UseLayoutToLayoutNavigationTransitions时,它会更改布局,但不会更改内容。

第一张照片是第一张收藏品。一系列类别及其中包含的人。

第二张照片是我最喜欢的动画片。特定类别中的一系列人物。

最后的图片就是现在发生的事情。类别只是重新排列。

First CollectionView What I'd like the animation to end up with What it looks like now.

2 个答案:

答案 0 :(得分:3)

查看

中的http://www.objc.io/issue-12/collectionview-animations.html
  

UICollectionViewController实例之间的转换

部分。

它基本上向您显示您必须通过实现导航控制器委托方法手动更改数据源和委托:

- (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获取布局更改
  • 观察转换何时完成
  • 将数据源设置为此时所需的数据源