当我用didReceive方法点击视图控制器的推送通知时,我设法从应用程序代理打开了一个视图控制器。我的问题是管理层次结构。假设我有视图A,B和C,这样我就可以在这些步骤中看到视图C: View A -> View B -> View C。但是当我单击推送通知时,它会将我带到视图C,所以当我单击视图C的后退按钮时,它应该具有相同堆栈顺序的视图B和视图A。这样做是可能的吗?
编辑:这是我的代码,如果有用的话
我想要BaseVc > secondBaseVc > LogbookVc > 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,但让它们按顺序排列,这样当我单击back按钮时,我应该有Logbook < secondBaseVc < Base Vc
发布于 2018-07-25 22:43:46
实际上并非如此,如果堆栈中没有这些viewControllers A和B,那么就不能弹出到以前的viewController。
在我看来,你可以做的是:你必须自己处理这件事,比如,当收到通知时。您必须先按下A,然后按下B,然后按下C,通过放入animation: false,这样就不会产生过渡的效果。
动画.navigationController?.pushViewController(objA,:false) .navigationController?.pushViewController(objB,动画: false) .navigationController?.pushViewController(objC,
:false)
编辑
let navigationController = UINavigationController(rootViewController: baseVc)
navigationController.pushViewController(logbookVc, animated: false)
navigationController.pushViewController(detailVc, animated: false)
self.window?.rootViewController = navigationController
self.window?.makeKeyAndVisible()重要说明:
使用camelCase创建对象名称,以获得正确的可读性。例如,let BaseVc应该是let baseVc,并且与logbookVc和detailVc相同
试着分享结果。
希望能有所帮助。
https://stackoverflow.com/questions/51521590
复制相似问题