如何popToRootViewController在navigationController堆栈上有多个viewController,并且只显示一个过渡?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何popToRootViewController在navigationController堆栈上有多个viewController,并且只显示一个过渡?相关的知识,希望对你有一定的参考价值。

如何popToRootViewController在navigationController堆栈上有多个viewController(2),并且只显示一个过渡?

例如VC A将VC B、C推到导航栈上。现在我想让C到A有一个平滑的动画过渡,而完全不显示B。

我试过很多方法,但总是看到B。

例如,我试过。

self.navigationController?.viewControllers.removeLast()
self.navigationController?.popToRootViewController(animated: true)

我试了很多方法,但总是看到B

func popBack<T: UIViewController>(toControllerType: T.Type) {
   if var viewControllers: [UIViewController] = self.navigationController?.viewControllers {
      viewControllers = viewControllers.reversed()
      for currentViewController in viewControllers {
         if currentViewController .isKind(of: toControllerType) {
            self.navigationController?.popToViewController(currentViewController, animated: true)
            break
         }
       }
   }
}

以及用动画false弹出,然后用动画true弹出,但我总是看到B. 有很多SO的线程,我尝试了更多的东西,不仅仅是我上面说的。

答案

故事板和视图

self.navigationController?.popToRootViewController(animated: true)

只有用这一行对我有用。

以上是关于如何popToRootViewController在navigationController堆栈上有多个viewController,并且只显示一个过渡?的主要内容,如果未能解决你的问题,请参考以下文章

如何popToRootViewController在navigationController堆栈上有多个viewController,并且只显示一个过渡?

需要用 popToRootViewController 发布中间视图吗?

双击UITabBarController时防止自动popToRootViewController

在 popToRootViewController 之后没有显示标签栏

popToRootViewController 未按预期工作

从另一个选项卡调用 popToRootViewController