2014-02-19 4 views
2

У меня есть два объекта UICollectionView, которые имеют разные источники и делегат. Я бы хотел, чтобы с помощью перехода с использованием UseLayoutToLayoutNavigationTransitions был выполнен «вид из приложения AppSesque».UICollectionView UseLayoutToLayoutNavigationTransitions с различными источниками данных

Это не работает. Когда я вызываю UseLayoutToLayoutNavigationTransitions, он меняет макет, но не контент.

Первое изображение - первый вид коллекции. Ряд категорий и людей, содержащихся в них.

Вторая фотография - это то, что я хотел бы, чтобы анимация закончилась. Ряд людей в определенной категории.

Последнее изображение, что происходит прямо сейчас. Категории просто перестраиваются.

First CollectionViewWhat I'd like the animation to end up withWhat it looks like now.

ответ

2

Ваша проблема заключается в том, что при переходе IOS изменит источник данных. Смотрите мой ответ на этот вопрос How to use useLayoutToLayoutNavigationTransitions in UICollectionView?

Вы можете использовать ту же схему, описанную здесь:

  • использовать UseLayoutToLayoutNavigationTransitions, чтобы получить макет изменения
  • наблюдать, когда переход осуществляется
  • установить источник данных к что вам нужно в этой точке
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; 
    } 
} 
Смежные вопросы