将自定义目的地分配给 popToRootViewController swift 4
assigning a custom destination to popToRootViewController swift 4
我正在使用 navigationController?.popToRootViewController(animated: true) 将当前视图关闭到上一个视图。我的视图控制器关系如下所示。
VC1->VC2
VC1->VC3
VC3->VC2
只要客户端在 VC2 中,我就想将导航控制器弹出回 VC1。这在 rootviewcontroller 设置为 VC1 时工作正常。但是,当客户端使用 VC3 的 segue 进入 VC2 时,rootviewcontroller 设置为 VC3,导航控制器弹出到 VC3.
我试过像这样更改根目录viewcontroller。
// 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)
但这实际上 returns viewcontroller 到根视图控制器 (VC1),甚至在 "navigationController?.popToRootViewController(animated: true)" 行执行之前,所以没有动画。
有什么方法可以在不立即显示根视图控制器的情况下设置导航控制器的根viewcontroller?
如果你放appdelegate.window!.rootViewController = VC1
,控制器栈已经死了,你的栈中只有一个单独的控制器,所以你不能申请popToRootViewController
。
如果这是您需要的导航,也许这个 可以帮助您:
我正在使用 navigationController?.popToRootViewController(animated: true) 将当前视图关闭到上一个视图。我的视图控制器关系如下所示。
VC1->VC2
VC1->VC3
VC3->VC2
只要客户端在 VC2 中,我就想将导航控制器弹出回 VC1。这在 rootviewcontroller 设置为 VC1 时工作正常。但是,当客户端使用 VC3 的 segue 进入 VC2 时,rootviewcontroller 设置为 VC3,导航控制器弹出到 VC3.
我试过像这样更改根目录viewcontroller。
// 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)
但这实际上 returns viewcontroller 到根视图控制器 (VC1),甚至在 "navigationController?.popToRootViewController(animated: true)" 行执行之前,所以没有动画。
有什么方法可以在不立即显示根视图控制器的情况下设置导航控制器的根viewcontroller?
如果你放appdelegate.window!.rootViewController = VC1
,控制器栈已经死了,你的栈中只有一个单独的控制器,所以你不能申请popToRootViewController
。
如果这是您需要的导航,也许这个