Изменение rootViewController вызывает странное поведение
Я устанавливаю 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
, Я все еще вижу регистрацию ViewController там. И скажем, если я меняю rootViewController 3-4 раза, все предыдущие контроллеры все еще там. Поэтому мой вопрос: как я могу удалить все viewController из памяти перед изменением rootViewController.
1 ответ
Вы можете вызвать эту функцию, это очистит все контроллеры представления.
self.window?.rootViewController?.dismissViewControllerAnimated(false, completion: nil)