Переход к определенному контроллеру представления после push-уведомления. Другая раскадровка и другая вкладка - PullRequest
0 голосов
/ 14 сентября 2018

Когда приходит push-уведомление, я хочу отправить пользователя определенному контроллеру представления (этот контроллер представления является вторым в иерархии навигации, также находится на 3-й вкладке и также находится на другой раскадровке). Когда пользователь отправляется на этот экран, я также хочу сохранить стек навигации, чтобы кнопка «Назад» была видимой, а когда нажата кнопка «Назад», пользователя нужно будет отправить первому на этой вкладке.

Вот моя структура:

Storyboard1: tab1 -> VC1 
Storyboard2: tab2 -> VC2
Storyboard3: tab3 -> VC3a -> VC3b 
Storyboard4: tab4 -> VC4

Когда приходит push-уведомление, пользователь должен быть отправлен на VC3b (который определен в Storyboard3), а нажатие кнопки «Назад» на этом экране должно перевести пользователя на VC3a. VC3b также имеет переменную с именем userId, которую мне нужно установить. Я получаю значение userId через мое уведомление.

Что у меня так далеко:

let userId = notification["userId"] as! String
let storyboard = UIStoryboard(name: "Storyboard3", bundle: nil)
let vc3b = storyboard.instantiateViewController(withIdentifier: "vc3b") as! VC3b
vc3b.userId = userId
window?.rootViewController = vc3b

Приведенный выше код не работает правильно. Он просто выводит пользователя на экран приложения по умолчанию.

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 14 сентября 2018

Я предполагаю, что 3-я вкладка вставлена ​​в контроллер навигации, поэтому

let tab = storyboard.instantiateViewController(withIdentifier: "tab") as! UITabBarController {
tab.selectedIndex = 2 // third tab
self.window?.rootViewController = tab
let nav = tab.viewController![2] as! UINavigationController
nav.pushViewController(vc3b,animated:true)
...