2016-12-09 3 views
0

プッシュ通知を取得するとSafariを使用してURLを開こうとしています。これは、アプリケーションが最初のviewcontrollerにあるときに正常に機能します。アプリがプログラムにさらにある場合しかし、私はエラーを取得プッシュ通知を使用してAppDelegateでSFSafariViewControllerを開こうとしています

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

(AdViewControllerは私の最初のビューコントローラであるので、それはまだその1に焦点を当てています。)

は、私がこのサイトを検索しましたし、試してみましたこのエラーのすべての提案が不足しています。現在、私のコードは次のようになります。

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

提示されたViewControllerにViewControllerを表示します。 – Eeshwar

+0

私はself.windowを試していましたか?.rootViewController?.present同じ問題を推測します。私はそれが壊れていることを知っている、私は修正を理解するにはあまりにも新しいです。 – Snorlax

答えて

0

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) 
     } 
関連する問題