推送通知后过渡到特定的视图控制器。不同的故事板和不同的选项卡

时间:2018-09-14 13:25:35

标签: ios swift push-notification

当推送通知到达时,我想将用户发送到特定的视图控制器(该视图控制器是导航层次结构中的第二个控制器,并且位于第三个选项卡上,并且位于另一个故事板上)。将用户发送到此屏幕时,我还希望维护导航堆栈,以便可以看到“后退”按钮,而在轻按“后退”按钮时,则需要将用户发送到该选项卡上的第一个用户。 / p>

这是我的结构:

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

当推送通知到达时,应将用户发送到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 :(得分:1)

我假设第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)