我在我的应用程序中像这样设置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次,所有以前的控制器仍然存在。因此,我的问题是,如何在更改viewControllers之前从内存中删除所有rootViewController。
发布于 2017-05-16 20:26:01
你可以调用这个函数,它将清除所有的视图控制器。
self.window?.rootViewController?.dismissViewControllerAnimated(false, completion: nil)https://stackoverflow.com/questions/44000906
复制相似问题