首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么我无法使用[transitionContext viewControllerForKey:UITransitionContextFromViewKey] ]获取FromVC和ToVC

在iOS开发中,使用[transitionContext viewControllerForKey:UITransitionContextFromViewKey]方法可以获取转场动画中的源视图控制器(FromVC)和目标视图控制器(ToVC)。然而,有时候可能会遇到无法获取到这些视图控制器的情况。

可能的原因有以下几点:

  1. 错误的键值:UITransitionContextFromViewKey是获取源视图的键值,而不是源视图控制器。正确的键值应该是UITransitionContextFromViewControllerKey
  2. 转场上下文不正确:在某些情况下,转场上下文可能会发生错误,导致无法正确获取视图控制器。这可能是由于转场动画的执行顺序或其他因素引起的。

解决这个问题的方法可以尝试以下几点:

  1. 使用正确的键值:将UITransitionContextFromViewKey替换为UITransitionContextFromViewControllerKey,以正确获取源视图控制器。
  2. 检查转场上下文:确保转场上下文的创建和传递过程正确无误。可以检查转场动画的代理方法中是否正确设置了转场上下文。
  3. 调试和排查:可以使用调试工具和打印语句来检查转场过程中的变量和对象,以确定问题所在。可以逐步检查转场动画的各个步骤,找出可能导致问题的地方。

总结起来,无法使用[transitionContext viewControllerForKey:UITransitionContextFromViewKey]获取FromVC和ToVC的原因可能是使用了错误的键值或者转场上下文出现了问题。解决方法包括使用正确的键值、检查转场上下文以及调试和排查可能的问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

iOS 自定义转场动画

{ //取出转场前后的视图控制器 UIViewController * fromVC = (UIViewController *)[transitionContext viewControllerForKey...:UITransitionContextFromViewControllerKey]; UIViewController * toVC = (UIViewController *)[transitionContext...viewForKey:UITransitionContextFromViewKey]; //这里有个重要的概念containerView,要做转场动画的视图就必须要加入containerView上才能进行...,就需要根据手势交互动作是否完成/取消来做操作,完成标记YES,取消标记NO,必须标记,否则系统认为还处于动画过程中,会出现无法交互之类的bug [transitionContext completeTransition...pan.delegate = self; // 给导航控制器的view添加全屏滑动手势 [self.view addGestureRecognizer:pan]; // 禁止使用系统自带的滑动手势

1.3K50

iOS 自定义转场动画

{ //取出转场前后的视图控制器 UIViewController * fromVC = (UIViewController *)[transitionContext viewControllerForKey...:UITransitionContextFromViewControllerKey]; UIViewController * toVC = (UIViewController *)[transitionContext...viewForKey:UITransitionContextFromViewKey]; //这里有个重要的概念containerView,要做转场动画的视图就必须要加入containerView上才能进行...,就需要根据手势交互动作是否完成/取消来做操作,完成标记YES,取消标记NO,必须标记,否则系统认为还处于动画过程中,会出现无法交互之类的bug [transitionContext completeTransition...pan.delegate = self; // 给导航控制器的view添加全屏滑动手势 [self.view addGestureRecognizer:pan]; // 禁止使用系统自带的滑动手势

1K90

iOS 转场动画探究(一)

自己的建议和理解,转场动画能帮你加深理解、总结你对动画的学习,但不要轻易在你的项目中大量的去尝试,还是觉得动画用的好就有点睛之笔的感觉,但若是大量的使用,很容易给人造成审美视觉疲劳。...在下面你肯定会大量的看到它,对于这个Transition(转场)过程中视图控制器其对应的视图在结构上的变化在巧神的博客中看到这张图,说实话,不太理解这张图表达了的是什么,把这张图给大家分享出来,你要理解的话可以留言大家讨论一下...UIViewController * toViewController = [transitionContext viewControllerForKey:( UITransitionContextToViewControllerKey...containerView]; UIView *fromView = [transitionContext viewForKey:UITransitionContextFromViewKey...,使用completeTransition:来完成或取消转场。

2.4K50

iOS 转场动画探究(二)

5、  转场协调器协议 UIViewControllerTransitionCoordinator        可以通过需要产生动画效果的视图控制器的transitionCoordinator属性来获取转场协调器...比如像我们第三个小例子里面后面半透明背景动画,就是通过这个UIViewControllerTransitionCoordinator我们来做的,主要在 Modal 转场交互转场取消时使用,其他时候很少用到...这种情况下,可以使用转场协调器来执行这些动画。        2、转场协调器动画控制器对象一块工作,确保任何额外动画被执行在同样的动画组中,就像转场动画一样。...EXAMPLE-FIVE       圆点扩散这个Demo主要的就是灵活的使用了UIBezierPath  CABasicAnimation,其实还要掌握了转场的本质,感觉剩下的真的就看你能想到哪里了...toViewController:(UIViewController *)toVC{ //分poppush两种情况分别返回动画过渡代理相应不同的动画操作 return [[PageAnimation

82640

iOS 转场动画探究(二)

5、  转场协调器协议 UIViewControllerTransitionCoordinator        可以通过需要产生动画效果的视图控制器的transitionCoordinator属性来获取转场协调器...比如像我们第三个小例子里面后面半透明背景动画,就是通过这个UIViewControllerTransitionCoordinator我们来做的,主要在 Modal 转场交互转场取消时使用,其他时候很少用到...这种情况下,可以使用转场协调器来执行这些动画。        2、转场协调器动画控制器对象一块工作,确保任何额外动画被执行在同样的动画组中,就像转场动画一样。...EXAMPLE-FIVE       圆点扩散这个Demo主要的就是灵活的使用了UIBezierPath  CABasicAnimation,其实还要掌握了转场的本质,感觉剩下的真的就看你能想到哪里了...toViewController:(UIViewController *)toVC{ //分poppush两种情况分别返回动画过渡代理相应不同的动画操作 return [[PageAnimation

1.3K70

iOS开发UINavigation系列四——导航控制器UINavigationController

iOS开发UINavigation系列四——导航控制器UINavigationController 一、引言         在前面的博客中,么你介绍了UINavigationBar,UINavigationItem...UIToolBar,UINavigationController是将这些控件UIViewController紧密的结合了起来,使用导航,我们的应用程序层次会更加分明,对controller的管理也更加方便...initWithNavigationBarClass:(nullable Class)navigationBarClass toolbarClass:(nullable Class)toolbarClass; //使用系统默认的导航栏工具栏...animationControllerForOperation:(UINavigationControllerOperation)operation fromViewController:(UIViewController *)fromVC... toViewController:(UIViewController *)toVC ; 六、与UIViewController相关         当一个controller被添加到导航中后,系统会为它分配一些属性

1.8K20

iOS透明导航栏的平滑过渡(进阶版)引实现过程结

引 如我在传送门:iOS导航栏切换界面时隐藏显示中所说,现在很多App的个人中心模块都是不保留导航栏的,会直接使导航栏透明,比如做的很好的QQ个人信息界面: 为什么说QQ做的很好呢?...现在问题已经讲完了,基于这些问题,我们自己来尝试实现一种更好的平滑过渡效果,不自定义导航栏,直接利用系统原生的导航栏,使用CategoryRuntime的技术,达到这个效果: 代码可以在示例工程下载...navBarBgAlpha),Category一般是不可以添加属性的,但我们可以通过Runtime的关联对象来做到,具体做法参看我的这篇文章:传送门:iOS中OC给Category添加属性,由于只能关联对象,所以我们无法直接添加...通过要交换的方法和我们定义的方法的名称,获取到对应的方法实现,然后用 method_exchangeImplementations 方法交换两个方法的实现: + (void)initialize {...: 有一个参数就是界面滑动过程的百分比,那么我们获取上一个界面的导航栏透明度、下一个界面的导航栏透明度、以及滑动的进度,通过很简单的数学计算就可以得出当前进度应该对应的透明度是多少了,这里也可以看出我们给

2.9K40
领券