私のアプリでは、このように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
}
正常です。しかし、その後私はDebug View Hierarchy
に行くときに登録後などのようにアプリでrootViewControllerを変更する必要があります。私はまだそこにregistrationViewControllerが表示されます。そして、私がrootViewControllerを3〜4回変更すると、以前のすべてのコントローラがまだそこにあるとします。だから私の質問はどのようにrootViewControllerを変更する前にメモリからすべてのviewControllerを削除することができますです。
'rootViewController'を' nil'に設定し、それを次の行に好きなものに設定するとどうなりますか? – LinusGeffarth
はすでにそれを試しましたが、私はそれが何もしません。 @LinusGeffarth –
ウィンドウに他のView Controllerを追加する方法をコードに記述してください。 –