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

其他的遇到這種情況的說明你得換個思維思考,換不了,說明是需求給的有問題,你可以去找老板談談,我也不會 ! 有會的大佬請指教

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 自我修煉的四個尋寶工具 四個尋寶工具 一、第一個尋寶工具——表達贊賞和感謝 贊賞和感謝我自己如此傳神地讓幻象表現得...
    龔玉婷閱讀 2,059評論 0 1
  • 1、當世界很殘酷,我們要活得更酷。 2、有時覺得“如約而至”是個多么美好的詞。等的很苦,卻從不辜負。 3、無恥青春...
    魔寧閱讀 89評論 0 1
  • 上一章 關于厲王別院失火的消息在都城里沸沸揚揚的傳了三五日后,明眼人都感覺到有一股不明動向的暗流在涌動,不時有江湖...
    琉璃唐草閱讀 143評論 0 0
  • 人們最初也驚羨 一朵花的芬芳 一輪明月的光亮 相遇久了 如石頭 如小草 如身邊的事物一樣 司空見慣了 就習以為常
    袁逸陽閱讀 221評論 0 2