Теперь, да, есть сотни вопросов (и ответов) о том, как выполнять пользовательские segues. Однако, и я не преувеличиваю, ВСЕ эти ответы ошибочны (все 50+ я видел)! Извините, это может показаться суровым, но правда в том, что NONE из предложенных ответов дает тот же (правильный) результат, что и яблоки, построенные в переходах (вертикальная обложка и т. Д.).PROPER путь создания пользовательского Segue
Чтобы быть более точным, это результат, который ожидается (подтверждено бревнами): начинается
- Segue (добавляет вид иерархии, вызывает
viewWillAppear
на destinationVC иviewWillDisappear
на sourceVC и начинается анимация). - анимация выполняется в течение всего периода
- Segue концы (анимация закончена, устанавливает destinationVC как текущий VC, либо на стеке или модально представлены. Запускает
viewDidAppear
на destinationVC иviewDidDisappear
на sourceVC).
Короче: вызвать viewWillAppear/Disappear
-> одушевленные переход -> вызвать viewDidAppear/Disappear
Используя яблоки встроенные перетекает, это ожидаемое поведение, но как-то ни одна душа, кроме меня есть были проблемы с этим. Много версий даже добавить назначения ракурса как подвид первым, одушевляет его затем удаляет его снова и вызывает
[srcVC presentModalViewController:destVC animated:NO];
или
[srcVC.navigationController pushViewController:destVC animated:NO];
вызывая показы событие для отправки во всех видах случайного порядка (такая же проблема с CoreAnimations).
В моем случае все, что я действительно хочу, - это «Вертикальная обложка» - переход назад (сверху вниз), со всеми другими событиями, отправленными ТОЧНО, как ожидалось (показано выше).
Итак, я просто должен жить со всеми видами уродливых обходными (делать свою «задачу» в жестко закодированных методах, вызываемых всякий раз, когда мне нужна их и т.д.), или есть какой-то скрытый собственно пути делать это в многоразовой манере?
Смешная вещь: даже яблоко suggest that you do it the "wrong" way, что делает его похожим на правильный путь, но с непоследовательным результатом по сравнению с их собственными способами ... Поэтому я полагаю, что яблоко делает это под капотом и забывает предоставить достаточную гибкость для клиентов выполняйте те же операции (большой недостаток - другими словами), или что я просто нахожусь в какой-то плохой поездке и вижу какую-то проблему, которая не существует ...
Надеюсь, у кого-то есть лучший ответ на ваш вопрос, но когда вы упоминаете тот факт, что Apple, похоже, предлагает вам сделать это «неправильным» способом, это напоминает мне, что Apple не будет в первый раз предоставлять разработчикам способность напрямую имитировать поведение сторонних разработчиков. Ситуация, которая приходит на ум, - это когда некоторые из анимаций перехода были использованы в различных приложениях Apple за несколько лет до того, как они разрешили сторонним разработчикам использовать их. – aTotalStranger