将自定义目标分配给popToRootViewController swift 4

时间:2018-06-29 01:56:51

标签: ios swift uinavigationcontroller rootviewcontroller

我正在使用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?

1 个答案:

答案 0 :(得分:0)

如果您放置appdelegate.window!.rootViewController = VC1,则控制器堆栈已失效,那么您的堆栈中只有一个单独的Controller,因此您无法应用popToRootViewController

如果这是您所需的导航,那么也许post可以帮助您: enter image description here