我在我的应用中这样设置 rootViewController。
func setupMainView() {
let rootViewContorller = window?.rootViewController
if (rootViewContorller?.presentedViewController != nil || rootViewContorller?.presentingViewController != nil) {
rootViewContorller?.dismiss(animated: false, completion: nil)
}
let tabbarController = UITabBarController()
tabbarController.delegate = self
let homeViewController = HomeViewController()
let rewardsViewController = RewardsViewController()
let homeNVc = UINavigationController()
let rewardsNVc = UINavigationController()
homeNVc.viewControllers = [homeViewController]
rewardsNVc.viewControllers = [rewardsViewController]
tabbarController.viewControllers = []
tabbarController.viewControllers = [homeNVc, rewardsNVc]
tabbarController.selectedIndex = 0
self.window?.rootViewController = tabbarController
}
它工作正常。但是我必须在注册之后更改应用程序中的 rootViewController 等。之后当我转到 Debug View Hierarchy
时。我仍然在那里看到 registrationViewController。假设我将 rootViewController 更改 3-4 次,所有以前的 Controller 仍然存在。所以我的问题是如何在更改 rootViewController 之前从内存中删除所有 viewController。
最佳答案
您可以调用此函数,这将清除所有 View Controller 。
self.window?.rootViewController?.dismissViewControllerAnimated(false, completion: nil)
关于ios - 更改 rootViewController 导致奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44000906/