Как я могу заставить UIKit предоставить мне координатора перехода для пользовательского перехода?

Я пишу настраиваемый контроллер представления контейнера, который управляет несколькими дочерними контроллерами представления, вроде того, что делает UIPageViewController.

Я хотел бы, чтобы клиенты могли анимировать вещи за пределами своей зоны ответственности наряду с интерактивным переходом между его дочерними контроллерами представления, но я не могу найти способ заставить UIKit предоставить мне координатора перехода.

Мне действительно нужно создавать собственный класс, реализующий этот протокол для такой простой задачи? Если да, то как мне реализовать -animateAlongsideTransition:completion:?


person Christian Schnorr    schedule 27.11.2015    source источник


Ответы (1)


Если вы говорите о координаторе перехода, который вы получаете от дочернего контроллера представления (то есть о свойстве transitionCoordinator UIViewController), вы не сможете получить его из системы. Такие координаторы перехода предоставляются только при очень ограниченном наборе обстоятельств.

Например, вам разрешено писать пользовательскую анимацию перехода, возможно, интерактивную, для UITabBarController, но ни при каких обстоятельствах вы не можете получить координатора перехода от любого из дочерних контроллеров представления, подвергающихся переходу; Я расцениваю это как серьезную ошибку.

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

person matt    schedule 27.11.2015
comment
Итак, каковы мои варианты? Написать свой? Злоупотреблять скрытым контроллером дочернего представления UINavigationController, чтобы получить координатора перехода? - person Christian Schnorr; 27.11.2015
comment
Вы не дали достаточно информации в своем вопросе, чтобы показать, что вы делаете или какова ваша цель, не говоря уже о том, чтобы я мог предложить варианты. Я попытался ответить на единственную фактическую проблему программирования, которую смог найти в вашем вопросе. Вы создаете свою собственную архитектуру, поэтому архитектура, которую вы создаете, зависит от вас. - person matt; 28.11.2015