2014-01-14 3 views
33

Я пытаюсь выяснить, какая разница между пользовательским UIStoryboardSegue и настраиваемым переходом UIViewcontroller (представлен в ios7).Разница между пользовательским интерфейсом UIStoryboardSegue и UIViewController

Каковы различия и разные варианты использования для обоих? Насколько я могу судить, они оба используются для пользовательских перемещений на новые контроллеры.

Возможно, переходы UIViewcontroller используются больше для контроллера, который отображается только на экране, и будет ли упущен какой-то момент, а segue - полный ход и не обязательно назад?

Custom Segues
UIViewControllerTransitioningDelegate Protocol Reference

+0

Segue определяет действие (отклонение A и отображение B) между двумя контроллерами представлений, а в то время как переход контроллера просмотра описывает, как открывается или отклоняется контроллер просмотра. – x4snowman

+0

Вы пытаетесь сказать, что segue имеет конкретное направление, в то время как переход View Controller не содержит презентационного и представленного контроллера представлений и не оживляет ли он один или нет? – StuartM

+0

Я хочу сказать, что 'segue' инкапсулирует действие, такое как [vc1 push: xxx] или [vc1 presentModal: xxx], это удобный способ представить v2 из v1 с заданным по умолчанию (push, modal) t нужно написать такой код, а просто вызвать [self performSegueWithIdentifier: xxx]. И, на мой взгляд, делегат перехода позволяет настраивать эффект анимации. – x4snowman

ответ

0

Если вы используете раскадровку перетекает, и вы хотите пользовательский переход, вы должны использовать пользовательский UIStoryboardSegue. Но если вы используете обычные методы UIViewController для представления новых контроллеров представлений, вы должны использовать настраиваемый переход UIViewController. В обоих случаях ваш предыдущий контроллер (ы) просмотра все еще существует, и вы можете вернуться, если хотите. Это зависит от того, какой метод вы хотите использовать для создания нового контроллера представлений.

+2

Я не уверен, что это правильно, так как вы можете использовать UIViewController Transitioning с segues без проблем. Я уже настроил некоторые переходы контроллера контроллера и использовал segues вместе с ними, даже пользовательские переходы. Однако я не знаю разницы между этими и прецедентами. – StuartM

+0

Вы могли бы, да. Но я думаю, что вы можете использовать пользовательский 'UIStoryboardSegue', когда на самом деле используете segues. – Gavin

+0

@StuartM Существует, по крайней мере, один случай, когда вы не можете использовать UIViewControllerTransitioningDelegate со сценариями раскадровки. Когда у вас есть пользовательский контроллер представления контейнеров с несколькими дочерними элементами, и вы хотите, чтобы пользовательский переход переходил от одного дочернего к другому дочернему элементу и правильно выполнял '-addChildViewController:' на контроллере контейнера, стандартный переход представления не работает, потому что он не будет обрабатывать родительские права.AFAICT, вы должны сделать это самостоятельно, и пользовательский segue является логичным местом для этого, но тогда UIViewControllerTransitioningDelegate не используется. – erikprice

3

Пользовательские Segues предназначены не только для определения стилей презентации, но и для определения пользовательской иерархии контроллеров представлений, а также стилей представления - что-то отличное от диспетчеров отображения навигации или панели табуляции.

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

С API пользовательских переходов презентация отделена от того, как управляются контроллеры представлений.

+2

Это имеет смысл. Есть ли способ инициировать переходы контроллера просмотра из пользовательских сегментов или любой другой способ сохранения разделения при использовании пользовательских сегментов? – kolizz

Смежные вопросы