【问题标题】:Trying to Open SFSafariViewController in AppDelegate via Push Notification尝试通过推送通知在 AppDelegate 中打开 SFSafariViewController
【发布时间】:2016-12-09 16:21:44
【问题描述】:

当应用收到推送通知时,我正在尝试使用 Safari 打开 URL。当应用程序位于第一个视图控制器中时,这会成功。但是,如果应用程序进一步进入程序,我会收到错误

<SFSafariViewController: 0x10b20ae60> on <AdViewController: 0x100b14530> whose view is not in the window hierarchy!

(AdViewController 是我的第一个视图控制器,所以它仍然专注于那个。)

我已经搜索了这个网站,并尝试了所有关于这个错误的建议,但都失败了。目前,我的代码如下所示:

if MessageUrl != nil , let url = URL(string: MessageUrl!) {
   let safari = SFSafariViewController(url: url)
                self.window?.rootViewController?.presentedViewController?.present(safari, animated: true, completion: nil)
}

【问题讨论】:

  • 你不能在呈现的 ViewController 上呈现 ViewController
  • 好吧,我试过 self.window?.rootViewController?.present 同样的问题我猜。我知道它坏了,我太新了,无法理解修复。

标签: ios objective-c swift3


【解决方案1】:

Get top most UIViewController我在该页面底部的“swift 3”答案中使用了 Appdeleagte 中的扩展 UIApplication,并将我的代码更改为:

if MessageUrl != nil , let url = URL(string: MessageUrl!) {
            let safari = SFSafariViewController(url: url)
             UIApplication.topViewController()?.present(safari, animated: true, completion: nil)
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-17
    • 2016-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多