【发布时间】:2018-12-08 03:37:23
【问题描述】:
我正在使用 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而不立即显示根视图控制器?
【问题讨论】:
-
您是在每次导航时设置新的 RootViewController 还是只是推入堆栈?
-
当 VC1 到 VC2 时,导航控制器被推送。但是,当 VC1 转到 VC3 时,VC3 被分配给一个新的导航控制器(这是因为我想要一个新的导航控制器的垂直转场)。因此,当用户使用 VC1->VC3->VC2 时,根视图是 VC3,它是导航堆栈上的第一个视图。我不知道如何解决这个问题。
标签: ios swift uinavigationcontroller rootviewcontroller