0

プッシュ通知が到着したときに私のアプリケーションで特定のビューを開こうとしましたが、このビューは分割ビューの詳細ビューでモーダルに表示されており、実行できませんでした。didReceiveRemoteNotification presentViewController in splitView

This is my story board

私はちょうどEventsViewControllerを提示しているトピックに関する多くの答えの一つを試していないが、明らかにこの方法は、分割ビューに接続され、もはや孤立VCを離れて。

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) { 
    let storyboard = UIStoryboard(name: "Main", bundle: nil) 
    let navigationController = storyboard.instantiateViewControllerWithIdentifier("NavigationControllerMessages") as! UINavigationController 
    let dVC:MessagesViewController = navigationController.topViewController as! MessagesViewController 
    dVC.vehicleLicensePlate = "ABC" 
    dVC.vehicleName = "My car" 
    self.window?.rootViewController?.presentViewController(navigationController, animated: true, completion: {}) 

} 

また、私は実際に動作しますが、私はEventsViewControllerを取得する階層ビューを登る方法がわからない分割ビューを提示しようとしている:

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) { 
    let storyboard = UIStoryboard(name: "Main", bundle: nil) 
    let destinationViewController = storyboard.instantiateViewControllerWithIdentifier("SplitInStoryboard") as! SplitViewController 
    self.window?.rootViewController?.presentViewController(destinationViewController, animated: true, completion:nil) 

} 

質問はそうEventsViewControllerを提示する方法でありますルートビューコントローラとビューの間ですべてのビューを接続できますか?

誰でも私を助けてくれることを願っています。私はこれを何時間も苦労してきました。前もって感謝します!

+0

このデリゲートは実行時にいつでも呼び出すことができるので、あなたは 'didReceiveRemoteNotification'でこの種のアクションを実行する必要はありません。ビュー・コントローラーを任意に押すと、ユーザーの対話が中断する可能性があります。また、Apple Framework Referenceによると、「できる限り、いつでもこのアプリケーションの代わりに 'application:didReceiveRemoteNotification:fetchCompletionHandler:'メソッドを実装してください」と言ってください。 – guillaume

+0

十分に公正、@guillaume。ありがとう!しかし、私がアプリケーション:didReceiveRemoteNotification:fetchCompletionHandler:を実装しても、私はまだEventsViewControllerを開く予定の完了ハンドラブロックを実装しなければならず、私の元の質問はまだ残っています。 –

答えて

0

私は最終的に答えを見つけました!それは@ StepanGeneralovの答えhttps://stackoverflow.com/a/21297223/6144027に基づいています。これは誰かを助けるかもしれないので、私はここに投稿します。ところで

let storyboard = UIStoryboard(name: "Main", bundle: nil) 
    let mvc = storyboard.instantiateViewControllerWithIdentifier("MessagesInStoryboard") as! MessagesViewController 
    mvc.vehicleName = "My car" 
    mvc.vehicleLicensePlate = "ABC" 
    let navController = UINavigationController(rootViewController: mvc) // Creating a navigation controller for mvc 

    var topRootViewController : UIViewController! = self.window?.rootViewController 
    while let vvc = topRootViewController.presentedViewController{ 
     topRootViewController = vvc 

    } 
    topRootViewController.presentViewController(navController, animated: true, completion: nil) 

@guillaumeが指摘したように、我々は、アプリケーションを実装する必要がありますdidReceiveRemoteNotification:fetchCompletionHandler:だけではなくdidReceiveRemoteNotificationのを。

関連する問題