Деинициализировать представленный контроллер представления - PullRequest
0 голосов
/ 06 марта 2019

У меня есть следующая функция

func switchRootViewController(rootViewController: UIViewController) {
    let window = UIApplication.shared.windows.first!
    window.rootViewController = rootViewController
    window.makeKeyAndVisible()
}

И я использую его в представленном контроллере представления, например в PresentedViewController.

let navigationViewController = UINavigationController(rootViewController: PresentedViewController())
present(navigationViewController, animated: true, completion: nil)

Но когда я переключаюсь на нужный контроллер представления, мой представленный контроллер представления не деинициализируется. Я должен использовать этот способ, сначала уволить:

self.dismiss(animated: true, completion: {
    switchRootViewController(rootViewController: HomeViewController.instantiate())
}) 

вместо простого

switchRootViewController(rootViewController: HomeViewController.instantiate())

1 Ответ

0 голосов
/ 06 марта 2019

UIViewController объекты сохраняются при представлении другим UIViewController. Чтобы освободить ваши контроллеры представлений, их необходимо удалить из иерархии представлений, чего можно добиться, отклонив их. Относительно того, где уволить ваш контроллер представления, я не уверен, потому что вы не дали достаточно информации. Но вам нужно закрыть любой контроллер представления, который вы хотите освободить из памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...