首页 > 解决方案 > 在 appDelegate 中的 didReceiveRemoteNotification 方法的 Present 模式后推送控制器

问题描述

我需要在 didReceiveRemoteNotification appDelegate 的方法内的当前完成处理程序中推送一个 viewController。

我的视图/控制器结构:

Splash > LoginController (UIViewController) > HomeController (UINavigationController)

当我收到一个新通知时,我想从我的 HomeController 推送一个新的 UIViewController。

到目前为止我所拥有的:

接收通知并获取数据 在 didReceiveRemoteNotification 中获取 window.rootViewController (LoginController) 使用 present(_:animated:completion:) 方法呈现 navBarController (这样做我可以看到 HomeController,因为控制器是 rootviewcontroller)

我需要的?

推送 ProductDetailController

我已经尝试过:

从 navBarController 推送 从 HomeController 的新实例推送

我得到了什么(但不想)

在完成处理程序上将 ProductDetailController 呈现为模态。

提前致谢!

标签: iosswift

解决方案


在say to中设置一个Bool默认值 并将其签入didReceiveRemoteNotificationtrueviewDidAppearHomeController

 override func viewDidAppear(_ animated:bool) {

   super.viewDidAppear(animetd:animated)

   if UserDefaults.standard.bool(forKey:"presentDetails") {

      let vc = self.storyboard?.instantiateViewController(withIdentifier: "detailsID") as! ProductDetailController

      self.navigationController?.pushViewController(vc, animated: true)

      UserDefaults.standard.set(false,forKey:"presentDetails")

   }

 }

推荐阅读