当我使用didReceive单击来自viewcontroller的推送通知时,已经设法从应用程序委托打开了一个View Controller 方法。我的问题是管理层次结构。考虑我拥有视图A,视图B和视图C,这样我将在以下步骤中看到视图C: 查看A->查看B->查看C。 但是,当我单击推送通知时,它将带我到View C,因此,当我单击View C的后退按钮时,它应该具有相同的堆栈顺序的View B和ViewA。有可能这样做吗?
编辑:如果有帮助,这是我的代码
我想要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,但要使它们井然有序,以便当我单击“后退”按钮时,我应该拥有Logbook
答案 0 :(得分:0)
实际上,如果您没有在堆栈中放置那些viewController A和B,那么您将无法弹出到以前的viewController。
我认为您可以做的是:您必须自行处理,例如收到通知时。您必须先通过以下方式放动画A:然后按B,然后按C,然后按C: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
相同尝试并分享结果。
希望有帮助。