ios - 运行时从任何地方的 didReceiveRemoteNotification presentViewController

标签 ios swift uinavigationcontroller push-notification presentviewcontroller

我正在尝试在收到远程通知时显示一个 UIViewController

我的代码可以正常工作,但是当应用程序正在运行并且用户位于第一个屏幕/导航堆栈以外的任何其他位置时,UIViewController 不会显示。

有人可以帮忙吗?注意我想在呈现 UIViewController 时保留导航栏

当我尝试在其他地方显示“UIViewController”时收到此警告

警告:尝试呈现不在窗口层次结构中的 View !

提前致谢

这是我的 didReceiveRemoteNotification:

代码
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {

  var payload = userInfo
  let requestID = payload["requestID"] as! String


  let rootViewController = self.window!.rootViewController as! UINavigationController

  let storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
  let vc : RequestViewController = storyboard.instantiateViewControllerWithIdentifier("RequestViewController") as! RequestViewController
    vc.requestID = requestID

  let navigationController = UINavigationController(rootViewController: vc)

  rootViewController.presentViewController(navigationController, animated: true, completion: nil)

}

最佳答案

通过更改修复它:

rootViewController.presentViewController(navigationController, animated: true, completion: nil)

到:

rootViewController.visibleViewController!.presentViewController(navigationController, animated: false, completion: nil)

关于ios - 运行时从任何地方的 didReceiveRemoteNotification presentViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32300075/

相关文章:

ios - 是否可以下拉刷新并在 uicollectionview 的自定义集合单元格中加载更多内容?

ios - Firebase 数据返回 Nil

iOS 7 在 UINavigationController 中呈现模态视图?

objective-c - 如何不将 segue 插入导航 Controller 堆栈?

iphone - 当点击 backBarButtonItem 时,有没有办法阻止 UIViewController 从 UINavigationController 的堆栈中弹出?

iOS7 后台同步(使用 NSURLSessionDataTask?)

ios - 在模拟器中测试多任务 iOS 9 功能

ios - 如何列出当前事件的手势识别器?

html - 将 HTML 表格抓取到 UITableView

ios - 如何在 swift 4 中将 json 数据保存在 userdefaults 上