我使用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)”行之前,这实际上也会将viewcontroller返回到根视图控制器(VC1),因此没有动画 .
有没有办法设置导航控制器的rootviewcontroller而不立即呈现根视图控制器?
1 回答
如果你把
appdelegate.window!.rootViewController = VC1
,控制器堆已经死了,你只在堆栈中有一个单独的控制器,因此你不能应用popToRootViewController
.如果这是您需要的导航,也许,这post可以帮助您: