Вопрос

Я работаю над несколькими UICollectionViewControllerS, все показывают одно и то же содержимое с разными макетами.

По словам Apple CollectionViewTransition Пример приложения и сессия 218 WWDC 2013, UICollectionViewController имеет собственность под названием useLayoutToLayoutNavigationTransitions Это в основном обрабатывает навигационные переходы путем интерполяции 'от' и 'to' election view.

Давайте предположим, что у меня есть два UICollectionViewControllers называется MasterCollectionViewController а также DetailCollectionViewController. Анкет Когда я толкаю DetailCollectionViewController из MasterCollectionViewController, макет правильно изменен, но представление об сборе по -прежнему использует источник данных, объявленный в MasterCollectionViewController.

Это проблема для меня, потому что в каждом из UICollectionViewControllerS, мне нужно перестроить раздел/конфигурации элементов. Хорошим примером того, что я пытаюсь сделать, является приложение для фотографий на iOS 7. Первая вкладка этого приложения имеет три контроллера представления: годы, коллекции и моменты. Эти контроллера View показывают одно и то же содержимое: фотографии. Что отличается от каждого контроллера представления, так это то, как фотографии сгруппированы в разделе. И группировка секции является обязанностью UICollectionViewDataSource что является проблемой здесь.

Если поведение useLayoutToLayoutNavigationTransitions Свойство, которое я испытываю, является нормальным поведением, есть ли способ достичь моей цели в другом подходе?

Любая помощь или комментарий будут оценены.

Спасибо!

Это было полезно?

Решение

Я вижу такое же поведение и согласен, что это не идеально.

Фундаментальная проблема здесь заключается в том, что то же самое UICollectionView Экземпляр общий/передается между двумя контроллерами представления. Я экспериментировал с попыткой изменить делегат и источник данных UICollectionView Но столкнулся с различными проблемами.

В конце концов, решение, которое я в итоге принял, было сделать мастер UICollectionViewController делегат UINavigationController, реализация:

– navigationController:willShowViewController:animated:

... используя это для переключения controllerMode свойство, а затем добавление операторов коммутатора в -collectionView:cellForItemAtIndexPath: а также -collectionView:didSelectItemAtIndexPath: Чтобы обеспечить необходимое поведение в режиме. Я также добавил код в -setControllerMode: сделать любые необходимые изменения состояния в контроллере мастер -представления.

Надеюсь, это поможет!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top