Не удается открыть приложение в определенном контроллере представления после подключения в локальном уведомлении - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть это приложение со следующей иерархией просмотра:

ГЛАВНАЯ

UINavigationController
    MainViewController
        UINavigationController
            DashboardController
                YTPageController
                    DashboardInitialViewController

ПОЛЬЗОВАТЕЛИ

UINavigationController
    UsersViewController

ДОБАВИТЬ ПОЛЬЗОВАТЕЛЕЙ

UINavigationController
    AddUsersViewController

С HOME вы можете show segue до USERS, а с USERS вы можете show segue до ADD USERS

Я хочу иметь возможность нажать на локальное уведомление и перейти непосредственно к ADD USERS, независимо от того, где я нахожусь в приложении.

Если я нахожусь в HOME, проблем нет.

Проблема в том, что я нахожусь в USERS, и я нажимаю на уведомление. Ничего не происходит.

Я пытаюсь удалить USERS ИЗ Иерархии представления, но, похоже, ничего не происходит.

Это код, который выполняется при нажатии на уведомление:

if  let conversationVC = storyboard.instantiateViewController(withIdentifier: "AddUsersViewController") as? AddUsersViewController {

     if var navController = self.window?.rootViewController as? UINavigationController {
          navController.isNavigationBarHidden = true                   
          navController.popToRootViewController(animated: true)
          navController.pushViewController(conversationVC, animated: true)
     }
}

Я пробовал в другом контроллере навигации в HOME, но тоже ничего.

if  let conversationVC = storyboard.instantiateViewController(withIdentifier: "AddUsersViewController") as? AddUsersViewController {

    if var navController = self.window?.rootViewController as? UINavigationController {

         if let main = navController.viewControllers[0] as? UIViewController {
                if let nav = main.navigationController as? UINavigationController {
                     nav.popToRootViewController(animated: true)
                     nav.isNavigationBarHidden = true
                     nav.pushViewController(conversationVC, animated: true)

                  }
        }                      
   }
}

1 Ответ

0 голосов
/ 01 октября 2019

Установите для анимированного значение false или используйте другую функцию с завершенной и нажмите viewController в завершенной функции. Проблема заключается в том, что код продолжает работать и пытается выдвинуть новый контроллер представления на другой, еще не запущенный.

navController.isNavigationBarHidden = true                   
navController.popToRootViewController(animated: false)
navController.pushViewController(conversationVC, animated: true)

и ...

nav.popToRootViewController(animated: false)
nav.isNavigationBarHidden = true
nav.pushViewController(conversationVC, animated: true)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...