iOS实现先无动画pop再push,替换当前控制器

iOS实现先无动画pop再push,替换当前控制器

1.先pop 发送通知或代理在前一个页面执行push操作

iOS开发中会遇到添加成功,发送成功……类似情况,需要先将push前的页面移除调。如果直接调用pop,立刻去push。如果这两个命令写在同一个控制器中,则会发现push根本没有被执行……因为pop已经将该控制器移除,push根本没有机会执行。也可以在上一个控制器通过代理/通知/闭包等操作。

这种方法有弊端,有可能会push多次不等。页面交互非常不好。

2.改变控制器在栈中的位置
所以就选择了下面的方法,先移除路由栈中当前控制器,再新增新的控制器,最后赋值。

  // 新建将要push的控制器
        MyGroupDetailViewController *detail = [[MyGroupDetailViewController alloc]init];
        detail.groupId = groupId;
        // 获取当前路由的控制器数组
        NSMutableArray *vcArray = [NSMutableArray arrayWithArray:self.navigationController.viewControllers];
        // 打印当前路由的控制器数组
        NSLog(@"1==the vcArray is %@", vcArray);
        // 获取档期控制器在路由的位置
        int index = (int)[vcArray indexOfObject:self];
        // 移除当前路由器
        [vcArray removeObjectAtIndex:index];
        NSLog(@"2==the vcArray is %@", vcArray);
        // 添加新控制器
        [vcArray addObject: detail];
        // 打印新增后的控制器数组
        NSLog(@"3==the vcArray is %@", vcArray);
        // 重新设置当前导航控制器的路由数组
        [self.navigationController setViewControllers:vcArray animated:YES];
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,267评论 4 61
  • 说起来你的名字,爸爸妈妈起得还是很随意的。那天你妈挺着肚子躺在床上,她连扭个腰,转个身拿起旁边的水杯都懒得动,我把...
    压力很大的六爷阅读 704评论 0 2
  • 相识总是刹那间 一日响午,潘阳湖上突的热闹起来。原来这一天是五月初五,只看满湖龙舟,黄发垂笤,市井之人皆于湖上...
    醉里不知年华阅读 295评论 4 1
  • 那次去旅游的时候, 忘了带一件自己喜欢的睡衣, 或者叫内衣。
    许蜜蜜阅读 137评论 0 0
  • 青春遇见罗马假日 微笑见证着 幸福时光 生活有阳光 也会有风雨 生活的不平静 在魂断蓝桥里 飘过相思的泪滴 走在风...
    郭相麟阅读 304评论 0 0