在自定义转换中获取nil [transitionContext containerView]

时间:2014-07-01 11:37:03

标签: ios objective-c ios7

我正在尝试在两个uiviewcontrollers之间转换期间创建自定义动画。当我尝试弹出一个视图控制器时,我在nil中获得了[transitionContext containerView]个对象。这是我自定义转换类的代码

- (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext
{
    UIViewController * toViewController   = (UIViewController *)[transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];
    UIViewController *fromViewController = (UIViewController *)[transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];
    UIView *containerView = [transitionContext containerView];//returns nil
    [containerView addSubview:toViewController.view];
    [fromViewController.view removeFromSuperview];
    [transitionContext completeTransition:YES];
}

我正在使用类似的代码,同时推动视图控制器并使其完美运行。但在流行期间它制造麻烦。

1 个答案:

答案 0 :(得分:1)

我自己也遇到了这个问题,看起来您需要将fromViewController的视图添加到containerView

正如transitionContext的{​​{1}}方法的文档所示:

  

动画师对象负责添加所呈现的视图控制器的视图......

目前尚不清楚为什么,但未将containerView的视图(“呈现的视图控制器”视图)添加到fromViewController会导致第一次工作转换,但{{1} }} containerView关于后续过渡。