ios 页面跳转问题

释放双眼,带上耳机,听听看~!

程序启动后从a ->b ->c

在c页面要求点击某按钮直接跳到a
使用方法:

[self.navigationController popToViewController [self.navigationController.viewControllers objectAtIndex:n] animated:NO];

n为页面的push顺序

跳转失败

提示:Unbalanced calls to begin/end appearance transitions for xxViewController

原因:同一时间进行多次跳转
比如,扫码场景,在a页面点击按钮进行扫码,通常扫码完成后要返回a页面,扫码后通常会调用某代理方法来返回扫码结果,在获取扫码结果后跳转到b页面。
那么这行起来时,如果你想在获取结果后立刻跳转到b页面你会发现出现跳转失败。

解决方法

已扫码场景的例子来说,我们默认的跳转顺序是先返回到a再跳转到b,所以在返回到a页面的语句作修改。

[self.navigationController popToRootViewControllerAnimated:NO];

参考:参考1

页面跳转方向

    //设置动画,使跳转方向为从左侧进来
//CATransition 对象创建
CATransition *transition = [CATransition animation];
///时间间隔  1.0f最慢   0.1f最快
transition.duration = 0.5f;
///动画的开始与结束的快慢
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
//上一行也可以写为 transition.timingFunction = UIViewAnimationCureEasyInOut;
///设置动画效果
transition.type = kCATransitionReveal ;
/*     type的其他类型:
kCATransitionFade       交叉淡化过渡
kCATransitionMoveIn    新视图移到旧视图上面
kCATransitionPush        新视图把旧视图推出去
kCATransitionReveal    将旧视图移开,显示下面的新视图
*/
///设置动画方向
transition.subtype = kCATransitionFromLeft;
/*   subtype的其他类型
kCATransitionFromRight; 从右面进来
kCATransitionFromLeft; 从左面进来
kCATransitionFromTop; 从上面进来
kCATransitionFromBottom; 从下面进来
*/
///在想添加CA动画的VIEW的层上添加此代码 addAnimation: forKey:
[self.navigationController.view.layer addAnimation:transition forKey:@"transition"];
//注意:将这些代码加在 navigationController 的 pushViewController:animated: 方法之前,并且加入该代码后要将pushViewController:animated:方法的animated 参数传NO
PSCourierInfoViewController *vc = [[PSCourierInfoViewController alloc] init];
[self.navigationController pushViewController:vc animated:NO];

亲测可用。。。。。
如有问题可留言交流!

人已赞赏
iOS文章

iOS开发FMDB 使用方法

2020-5-11 9:01:52

iOS文章

iOS 指定部分页面可屏幕旋转

2020-5-11 10:16:52

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索