我正在使用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),因此没有动画。
是否可以在不立即显示根视图控制器的情况下设置导航控制器的rootviewcontroller?
答案 0 :(得分:0)
如果您放置appdelegate.window!.rootViewController = VC1
,则控制器堆栈已失效,那么您的堆栈中只有一个单独的Controller,因此您无法应用popToRootViewController
。
如果这是您所需的导航,那么也许post可以帮助您: