В моем iOS-приложении я изначально запускаю контроллер вида входа в систему, который использует навигационные контроллеры.
Контроллер приветствия
Контроллер входа в систему
Когда пользователь успешно входит в систему, я изменяю контроллер корневого представления, чтобы перевести его на экран главного меню, где я использую SWRevealViewController для управления выдвижным меню.
Проблема, с которой я столкнулся, заключается в том, что когда пользователь щелкает, чтобы выйти из системы, его возвращают обратно в LoginVC, однако, по мере того, как он проходит через процесс входа в систему, я сталкиваюсь с ViewControllers, наложенными друг на друга.
Добро пожаловать VC можно увидеть за Login VC
Я пытался найти похожие проблемы и пытался убедиться, что я отключаю все остальные контроллеры представления при выходе из системы как для PresentingViewControllers, так и для NavigationController.
При успешном входе в систему я использую этот код для переключения контроллера rootview.
// Present the main view
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let viewController = mainStoryboard.instantiateViewController(withIdentifier: "reveal")
UIApplication.shared.keyWindow?.rootViewController = viewController
self.dismiss(animated: true, completion: nil)
Когда пользователь щелкает, чтобы выйти, я использую этот код, чтобы вернуться в раздел входа в систему.
// Switch to WelcomeView VC on logout
self.view.window?.rootViewController?.dismiss(animated: true, completion: nil)
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let viewController = mainStoryboard.instantiateViewController(withIdentifier: "WelcomeView")
UIApplication.shared.keyWindow?.rootViewController = viewController
dismiss(animated: true, completion: nil)
Я ожидал, что вернусь в Welcome VC и снова смогу работать через процесс входа в систему. В этом случае, однако, экран приветствия все еще виден за ВК для входа в систему.
Любые предложения будут с благодарностью!