2014-10-16 3 views
2

Я хочу добавить переходную анимацию из ViewController1 в ViewController2. Следующая картинка, показывающая BaseTabBarController и TableViewController. BaseTabBarController имеет свои .h и .m файлы с именем (BaseTabBarController); Если я добавлю какой-либо вид в базовую панель вкладок, он будет добавлен в TableViewController. Я нажимаю третий ViewController из TableViewController. Таким образом, в нижнем коде fromVC должен быть TableViewController, но он содержит BaseTabBarViewController. Я не могу понять, что здесь происходит? Пожалуйста, предложите любое решение, чтобы я мог двигаться вперед. Я буду благодарен всем вам. enter image description hereUITransitionContextFromViewControllerKey, возвращающий неправильный ViewController

-(void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext 
{ 
    UIViewController <ZoomTransitionProtocol> * fromVC = (id)[transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey]; 
    UIViewController <ZoomTransitionProtocol> *toVC = (id)[transitionContext viewControllerForKey:UITransitionContextToViewControllerKey]; 
    UIView * containerView = [transitionContext containerView]; 
    UIView * fromView = [fromVC view]; 
    UIView * toView = [toVC view]; 

    [containerView addSubview:toView]; 

    UIView * zoomFromView = [fromVC viewForZoomTransition]; 
    UIView * zoomToView = [toVC viewForZoomTransition]; 

//Code is continuing… 

} 

ответ

0

я понял, этот вопрос и его решить и прекрасно работает.

Решение: Посмотрите на следующий скриншот: enter image description here

Вы заметите, что, во-первых, Навигационный контроллер это места, а затем ViewController; После этого появится TabBarController; Первый элемент TabBarController - TableViewController; Когда мы нажимаем любой контроллер вида из любого элемента tabBar, он будет толкать, потому что у нас есть корневой навигационный контроллер; Поэтому нет необходимости добавлять отдельные навигационные контроллеры для каждой вкладки.

Но UITransitionContextFromViewControllerKey вернет классы BaseTabBar. Поэтому для решения проблемы я просто добавил новый навигационный контроллер для элемента tabBar. Теперь он вернет правильный FromViewCotroller. Правильный скриншот: enter image description here

+0

Я пытаюсь сделать что-то подобное. Но я получаю приложение «*** Termination» из-за неотображенного исключения «NSInvalidArgumentException», причина: '- [UINavigationController setThing:]: нераспознанный селектор, отправленный в экземпляр 0x7fc86b5ab1e0'', потому что я пытаюсь передать некоторые данные в модальное представление - Did вам нужно настроить контроллер для нового контроллера навигации? –

+0

@GabrielMSharp Я просто добавил навигационный контроллер; Если вам нужно передать некоторые параметры, вам нужно сделать это, как в рассказе. – msmq

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