iOS学习专题

iOS- 先pop掉当前controller, 再push的实现

2020-05-06  本文已影响0人  时米高的人生笔记

一、需求场景

二、第一版方案

   ThirdViewController *vc = [[ThirdViewController alloc] init];
   // 先pop掉第二个VC
    [self.navigationController popViewControllerAnimated:YES];
   // 再push出第三个VC
    [self.navigationController pushViewController:vc animated:YES];

这样写的话,会有第一个VC一闪而过的画面,体验很不友好👇

三、优化后的方案

   // 将要push到的vc
    ThirdViewController* targetVC =[[ThirdViewController alloc] init];

    // 获取当前路由的控制器数组
    NSMutableArray *vcArray = [NSMutableArray arrayWithArray:self.navigationController.viewControllers];
    
    // 打印当前路由的控制器数组
   //  NSLog(@"==the vcArray is %@", vcArray);

    // 移除当前控制器
    [vcArray removeObject:self];
    // 添加新控制器
    [vcArray addObject:targetVC];

    // 打印新增后的控制器数组
   // NSLog(@"新增后的 ==the vcArray is %@", vcArray);

    // 重新设置当前导航控制器的路由数组
    [self.navigationController setViewControllers:vcArray animated:YES];

这样写,跳转就是润物细无声丝滑般流畅了,👇

上一篇下一篇

猜你喜欢

热点阅读