Как бы вы реализовали [UIViewController presentModalViewController]? - PullRequest
1 голос
/ 14 января 2011

Мне нужно настроить переход между двумя различными UIViewController и для этого я хотел бы повторно реализовать [UIViewController presentModalViewController ...]. Что внутри этой функции? Как это работает? Что это делает?

Большое спасибо, Vance

Ответы [ 2 ]

1 голос
/ 14 января 2011

-[UIViewController presentModalViewController:animated:] делает много магии за кулисами.

Для моего приложения Tweet Note Я хотел представить модальные контроллеры вида, анимируя новый вид с обратной стороны вида на полке. Более или менее то, что делает iBooks. Я попытался переопределить реализацию по умолчанию, но в итоге сделал это в многошаговом решении, которое работает без уродливых хаков и предостережений:

  1. Создание нового контроллера представления.
  2. Примените преобразование к управляемому представлению нового контроллера представления, чтобы оно началось в его исходном местоположении. 100
  3. Начать анимацию вида в нетрансформированное «нормальное» положение.
  4. Подождите, пока закончится анимация, и сделайте как единое целое:
    • Удалить только что анимированный вид с экрана.
    • Звоните [self presentModalViewController:vc animated:NO].

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

Отмена с вашим пользовательским переходом более или менее делает то же самое, но в обратном порядке.

0 голосов
/ 14 января 2011

Существует множество доступных переходов.Ни один из них не отвечает вашим потребностям?Смотрите этот пост для больше .

...