ios 连续两次跳转,但需要去除第一次跳转动画

需求背景:

从A界面跳转到C,C界面点击返回到B界面,B点击返回回到A界面。

第一种情况:push + push
//在A控制器
[self.navigationController pushViewController:C animated:YES];
//获取到导航控制器下的所有子控制器,设置好顺序。
NSMutableArray*tempMarr =[NSMutableArray arrayWithArray:self.navigationController.viewControllers];
//当前可以看到顺序 tempMarr :[A,C]
[tempMarr insertObject:B atIndex:tempMarr.count- 1];
[self.navigationController setViewControllers:tempMarr animated:YES];
//添加之后顺序tempMarr:[A,B,C],之后即可实现;
第二种情况:push + present
//更简单 不需要获取导航控制器,在A控制器中直接present到C控制器
[A presentViewController:C animated:YES completion:^{
        //push去除动画效果
        [self.navigationController pushViewController:B animated:NO];
    }];
第三种情况:present + push
[A presentViewController:[[UINavigationController alloc]initWithRootViewController:C] animated:YES completion:^{
            NSMutableArray*tempMarr =[NSMutableArray arrayWithArray:C.navigationController.viewControllers];
            [tempMarr insertObject:B atIndex:tempMarr.count -1 ];
            [C.navigationController setViewControllers:tempMarr animated:YES];
    }];

//这里值得注意的是此时这三个界面 是B,C在同一个导航控制器,A单独在一个导航控制器,所以当C pop回到B的时候。B需要自定义一个返回到A的 按钮
[self dismissViewControllerAnimated:YES completion:nil];

第四种情况 present + present
小知识点:A presentViewController 到B 后,
           *A.presentedViewController就是B,
           *B.presentingViewController就是A

其他的遇到这种情况的说明你得换个思维思考,换不了,说明是需求给的有问题,你可以去找老板谈谈,我也不会 ! 有会的大佬请指教

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 自我修炼的四个寻宝工具 四个寻宝工具 一、第一个寻宝工具——表达赞赏和感谢 赞赏和感谢我自己如此传神地让幻象表现得...
    龚玉婷阅读 6,362评论 0 1
  • 1、当世界很残酷,我们要活得更酷。 2、有时觉得“如约而至”是个多么美好的词。等的很苦,却从不辜负。 3、无耻青春...
    魔宁阅读 952评论 0 1
  • 上一章 关于厉王别院失火的消息在都城里沸沸扬扬的传了三五日后,明眼人都感觉到有一股不明动向的暗流在涌动,不时有江湖...
    琉璃唐草阅读 1,220评论 0 0
  • 人们最初也惊羡 一朵花的芬芳 一轮明月的光亮 相遇久了 如石头 如小草 如身边的事物一样 司空见惯了 就习以为常
    袁逸阳阅读 1,589评论 0 2

友情链接更多精彩内容