首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从推送通知打开视图控制器时如何管理视图层次结构

从推送通知打开视图控制器时如何管理视图层次结构
EN

Stack Overflow用户
提问于 2018-07-25 22:36:14
回答 1查看 145关注 0票数 0

当我用didReceive方法点击视图控制器的推送通知时,我设法从应用程序代理打开了一个视图控制器。我的问题是管理层次结构。假设我有视图A,B和C,这样我就可以在这些步骤中看到视图C: View A -> View B -> View C。但是当我单击推送通知时,它会将我带到视图C,所以当我单击视图C的后退按钮时,它应该具有相同堆栈顺序的视图B和视图A。这样做是可能的吗?

编辑:这是我的代码,如果有用的话

我想要BaseVc > secondBaseVc > LogbookVc > DetailVc

代码语言:javascript
复制
        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

EN

回答 1

Stack Overflow用户

发布于 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)

编辑

代码语言:javascript
复制
        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,并且与logbookVcdetailVc相同

试着分享结果。

希望能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51521590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档