У меня есть приложение, которое представляет собой приложение с одним представлением. У меня есть контроллер навигации, связанный со всеми дочерними контроллерами от контроллера корневого представления.
В каждом дочернем контроллере у меня есть кнопка выхода. Мне интересно, могу ли я иметь одну функцию, которую я могу назвать, которая отбросит все контроллеры, которые были открыты вдоль пути, независимо от того, какой контроллер в настоящее время открыт, когда пользователь нажимает кнопку выхода из системы?
Мой основной старт:
func tryLogout(){
self.dismissViewControllerAnimated(true, completion: nil)
let navigationController = UINavigationController(rootViewController: UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("LoginViewController") )
self.presentViewController(navigationController, animated: true, completion: nil)
}
Я ищу наиболее эффективный способ решения этой задачи. Я положу свою функцию выхода из системы в отдельный файл utils, но тогда я не могу использовать self. И у меня все еще есть проблема, чтобы узнать, какие контроллеры должны динамически отклоняться.
Обновление Было предложено использовать контроллер для просмотра в корневом режиме. Поэтому моя попытка:
func tryLogout(ViewController : UIViewController){
print("do something")
dispatch_async(dispatch_get_main_queue(), {
ViewController.navigationController?.popToRootViewControllerAnimated(true)
return
})
}
Будет ли это лучшим способом добиться того, что мне нужно?