我已经在我的应用中实现了firebase notification
。当我单击通知时,我想打开特定的vc。 vc的层次结构是这样,
TabBarController-> TabBarVC1-> 1VC-> 2VC
现在,我想在单击通知时转到2VC。我已经尝试了代码,但运行良好,但是VC的层次结构受到干扰,当我将代码移到那里时,它不会再出现。这就是我打开2VC的方式。
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "2VC")
self.present(controller, animated: true, completion: nil)
我希望它打开2VC,但其层次结构不应受到干扰。 当我在2VC上单击“后退”按钮时,它应该移回1VC。
答案 0 :(得分:0)
要具有后退按钮,则需要将tabBar的根vc设置为navigationController
入口点-> TabBar-> Tab1-> NavigationController-> VC1-> VC2
然后在vc1中使用它
self.navigationController?.pushViewController(vc2, animated: true)
如果您想从AppDelelgate打开通知接收通知,请使用
if let tab = self.window?.rootViewController as? UITabBarController {
let vc1 = //////
let vc2 = //////
let nav = tab.viewControllers![0] as! UINavigationController
nav.viewControllers = [vc1,vc2]
}
答案 1 :(得分:0)
这样做
let vc1 = // alloc vc 1
let vc2 = // alloc vc 2
let vc3 = // alloc vc 3
let nav_Controllr = // alloc UINavigationController
// Now add your previous vc in NavigationController first
nav_Controllr.viewControllers.append(vc1)
nav_Controllr.viewControllers.append(vc2)
// Now push to the vc where you wanted navigate
nav_Controllr.pushViewController(vc3, animated: true)
现在您的导航堆栈就是这样
vc1 -> vc2 -> vc3
当您弹出控制器时,它始终会出现在此流程中。
vc3 => vc2 => vc1