首页 > 解决方案 > 将自定义目的地分配给popToRootViewController swift 4

问题描述

我正在使用 navigationController?.popToRootViewController(animated: true) 将当前视图关闭为上一个视图。我的视图控制器关系如下所示。

VC1->VC2
VC1->VC3
VC3->VC2

每当客户端在 VC2 中时,我都想将导航控制器弹回 VC1。当 rootviewcontroller 设置为 VC1 时,这可以正常工作。但是,当客户端使用 VC3 的 segue 进入 VC2 时,rootviewcontroller 设置为 VC3,导航控制器弹出到 VC3。

我试图像这样更改rootviewcontroller。

 // set root view controller
    let appdelegate = UIApplication.shared.delegate as! AppDelegate
    let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
    let VC1 = mainStoryboard.instantiateViewController(withIdentifier: "VC1") as! FirstViewController
    appdelegate.window!.rootViewController = VC1
    navigationController?.popToRootViewController(animated: true)

但这实际上甚至在执行“navigationController?.popToRootViewController(animated: true)”行之前将视图控制器返回到根视图控制器 (VC1),因此没有动画。

有没有办法在不立即显示根视图控制器的情况下设置导航控制器的根视图控制器?

标签: iosswiftuinavigationcontrollerrootviewcontroller

解决方案


如果你放appdelegate.window!.rootViewController = VC1了,控制器堆栈已经死了,你在堆栈中只有一个单独的控制器,因此你不能申请popToRootViewController

如果这是您需要的导航,也许这篇文章可以帮助您: 在此处输入图像描述


推荐阅读