UITransitionContextFromViewControllerKey返回错误的ViewController

时间:2014-10-16 14:15:39

标签: ios objective-c xcode ios7

我想将ViewController1的Transition动画添加到ViewController2。下图显示了BaseTabBarController和TableViewController。 BaseTabBarController有超过.h和.m文件命名(BaseTabBarController);如果我将在基本选项卡栏中添加任何视图,那么它将添加到TableViewController中。我正在从TableViewController推送第三个ViewController。所以在下面的代码中, fromVC 应该是TableViewController,但它包含BaseTabBarViewController。我无法知道这里发生了什么?请建议任何解决方案,以便我可以继续前进。我将感谢你们所有人。 enter image description here

    -(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…

}

1 个答案:

答案 0 :(得分:0)

我已经找到了问题并且已经解决并且工作得很好。

<强>解决方案: 请看下面的截图: enter image description here

您会注意到,首先,导航控制器是地方,然后是ViewController;之后, TabBarController 将会出现; TabBarController的第一项是TableViewController; 当我们从任何tabBar项目推送任何视图控制器时,它将推送,因为我们有根导航控制器;因此,无需为每个选项卡添加单独的导航控制器。

UITransitionContextFromViewControllerKey 将返回BaseTabBar类。因此,为了解决问题,我刚为tabBar项添加了一个新的导航控制器。现在它将返回正确的 FromViewCotroller 。 以下是正确的截图: enter image description here