Как перенаправить на главный экран при переходе в фоновый режим или возобновлении работы на переднем плане - PullRequest
0 голосов
/ 01 мая 2018

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

func applicationWillEnterForeground(_ application: UIApplication) {
    guard let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(
        withIdentifier: "main") as? MainViewController else { return }
    self.window?.rootViewController?.present(vc, animated: true, completion: nil)
}

Выше приведен код, который у меня есть в appDelegate, но каким-то образом он выдает ошибку: Попытка представить ... на ..., чье представление не находится в иерархии окон! "

Пожалуйста, помогите мне. Большое спасибо !!

1 Ответ

0 голосов
/ 01 мая 2018

Вместо представления поверх текущего rootViewController вам нужно забыть о последнем rootViewController. А также здорово забыть о существующем окне. Используйте код:

func applicationWillEnterForeground(_ application: UIApplication) {

    guard let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(
        withIdentifier: "main") as? UINavigationController else {
            print("NIL VC")
            return
    }

    self.window = UIWindow(frame: UIScreen.main.bounds)
    self.window?.rootViewController = vc
    self.window?.makeKeyAndVisible()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...