Как управлять иерархией представления при открытии контроллера представления из 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
Попробуйте и поделитесь результатами.
Надеюсь, поможет.