Ios 导航控制器如何弹出整个堆栈,包括根
我正在学习协调模式。我有几个登录视图控制器。一旦用户完成登录,我想弹出整个导航堆栈,并将我的主视图控制器设置为根。这可行吗Ios 导航控制器如何弹出整个堆栈,包括根,ios,swift,uinavigationcontroller,Ios,Swift,Uinavigationcontroller,我正在学习协调模式。我有几个登录视图控制器。一旦用户完成登录,我想弹出整个导航堆栈,并将我的主视图控制器设置为根。这可行吗 我的一个解决方法是将一个空视图控制器设置为根,这样我就可以执行poptrootviewcontroller,然后将主vc添加为子级。但是这看起来并不干净。如果您想完全移除并替换整个堆栈,只需再次启动流 设置新的导航控制器和AppCoordinator,并将导航控制器分配给window.rootViewController。在AppCoordinator上调用start,就像
我的一个解决方法是将一个空视图控制器设置为根,这样我就可以执行
poptrootviewcontroller
,然后将主vc添加为子级。但是这看起来并不干净。如果您想完全移除并替换整个堆栈,只需再次启动流
设置新的导航控制器和AppCoordinator,并将导航控制器分配给window.rootViewController。在AppCoordinator上调用start,就像在启动时一样,这样就有了一个新的堆栈
您可以在AppCoordinator中添加一个方法来为您处理此问题
class AppCoordinator: Coordinator, NSObject {
var navigationController: UINavigationController
init(navigationController: UINavigationController) {
self.navigationController = navigationController
}
func start() {
let vc = MainViewController()
navigationController.setViewControllers([vc], animated: true)
}
func resetNavigationStack() {
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
return
}
navigationController = UINavigationController()
appDelegate.window = navigationController
start()
}
}
更改
viewControllers
属性
let vc = ///
self.navigationController?.viewControllers = [vc]
问题是怎么做?是否有可能对上一个堆栈离开屏幕的方式设置动画?就像一个淡出