Как управлять иерархией представления при открытии контроллера представления из push-уведомления

Мне удалось открыть контроллер представления из делегата приложения при нажатии на push-уведомление из viewcontroller с помощью метода didReceive. Моя проблема заключается в управлении иерархией. Представьте, что у меня есть View A, B и C, чтобы я мог видеть View C в следующих шагах: View A -> View B -> View C. Но когда я нажимаю push-уведомление, я перехожу на View C, поэтому, когда я нажимаю на задней кнопке View C должны быть View B и View A в том же порядке стека. Возможно ли это сделать?

Изменить: это мой код, если это помогает

Я хочу BaseVc > secondBaseVc > Журнал Vc > DetailVc

        if let info = userInfo as? [String:Any]{
        let id = info["id"] as? String ?? ""


        let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
        let BaseVc = storyBoard.instantiateViewController(withIdentifier: "BaseViewController") as! BaseViewController
        let secondStoryboard : UIStoryboard = UIStoryboard(name: "Second Storyboard", bundle: nil)

        let secondBaseVc : BaseController = secondStoryboard.instantiateViewController(withIdentifier: "secondBaseVc") as! secondBaseVc
        let LogbookVc : LogbookVc = secondStoryboard.instantiateViewController(withIdentifier: "LogbookVc") as! LogbookVc
        let DetailVc: DetailVc = secondStoryboard.instantiateViewController(withIdentifier: "DetailVc") as! DetailVc

    }

Как мне подключить их, чтобы показать DetailVc, но привести их в порядок, чтобы при нажатии кнопки "Назад" у меня был журнал

1 ответ

На самом деле, если у вас нет этих viewControllers A и B в стеке, то у вас не может быть чего-то всплывающего в предыдущем viewController.

На мой взгляд, то, что вы можете сделать, это: вы должны справиться с этим самостоятельно, например, при получении уведомления. Вы должны сначала нажать A, затем B, а затем C, поместив animation: false, чтобы он не давал эффекта перехода.

.navigationController?.pushViewController (objA, animated: false).navigationController?.pushViewController (objB, animated: false).navigationController?.pushViewController (objC, animated: false)

РЕДАКТИРОВАТЬ

        let navigationController = UINavigationController(rootViewController: baseVc)
        navigationController.pushViewController(logbookVc, animated: false)
        navigationController.pushViewController(detailVc, animated: false)

        self.window?.rootViewController = navigationController
        self.window?.makeKeyAndVisible()

ВАЖНАЯ ЗАМЕТКА:

Создайте имя вашего объекта с помощью camelCase для правильного чтения. например, пусть BaseVc должен быть разрешен baseVc и то же самое для logbookVc и detailVc

Попробуйте и поделитесь результатами.

Надеюсь, поможет.

Другие вопросы по тегам