24

に応じて、特定のViewControllerの起動:ユーザーは「Sysalertビュー・コントローラ」からログインしたとき、彼らはある私は下の画像のようなストーリーボードが流れだアプリ作成していたリモートプッシュ通知

storyboard

を私はNSURLConnectionを使ってテーブルにいくつかのJSONをロードする "メッセージリストビューコントローラ"に持ってきました。ユーザーがテーブルの行をタップすると、そのメッセージの詳細情報を示す「メッセージの詳細」に移動します。

起動前にアプリの状態に関係なくプッシュ通知からアプリを起動すると、アプリは自分のサーバーから「メッセージリスト」データを読み込んで、そのメッセージを表示するようにしますデバイスにプッシュされます。

アプリにプッシュ通知に反応するように指示するには、didFinishLaunchingWithOptionsを使用する必要がありますが、「メッセージリスト」ビューコントローラがそのデータを読み込んでから「メッセージ詳細」ビューをプッシュするように、コントローラーを適切なメッセージのスタックに追加しますか?

本質的に、この種のメッセージやメールアプリケーションの動作を模倣します。通知を開くと、そのメッセージのView Controllerが表示されますが、最初のviewControllerからアプリを起動し、viewControllerを順番に通過したかのように、階層内に戻って移動できます。

+0

カスタマイズされている場合は、バックボタンアクションのためNotificationsViewControllerでグローバル

ex: BOOL gotNotifcation; -(void)application:(UIApplication*)app didReceiveRemoteNotification:(NSDictionary *)userInfo { NotificationsViewController *notificationobject = [[NotificationsViewController alloc]init]; [self.navigationController pushViewController:notificationobject animated:YES]; gotNotifcation = YES; } 

ように私は自分のアプリケーションのいずれかで使用されるこの、アプリデリゲートでのユーザー変数を試してみてくださいあなたは答えを持っていますか?私は同じ問題を抱えています。ありがとうございます –

+0

[iOS Swiftの可能な複製]プッシュ通知から特定のViewControllerをプログラムでナビゲートする](https://stackoverflow.com/questions/43058261/ios-swift-navigate-to-certain-viewcontroller-programmatically) -from-push-notifica) –

答えて

8

説明することは可能ですが、お勧めしません。

フリスト、didFinishLaunchingWithOptions:では、ビューコントローラに識別子を与え、あなたはストーリーボードにしたいビューと

を「マイプッシュ通知ビュー」のようなものを切断ビューコントローラを置き、あなたはからrootViewControllerに取得することができますアプリケーションの代理人。このコントローラーはナビゲーションコントローラーになります。ナビゲーションコントローラを使用すると、スタックの上に新しいビューコントローラをプッシュできます。新しいView Controllerを作成するには、識別子「My Push Notification View」を使用してView Controllerをインスタンス化します。

UINavigationController *navController = (UINavigationController *)self.window.rootViewController; 
UIViewController *notificationController = [navController.storyboard instantiateViewControllerWithIdentifier:@"My Push Notification View"]; 

[navController pushViewController:notificationController animated:YES]; 

私はあなたの代わりに、ナビゲーションスタックを中断するのモーダルビューを表示するため-presentViewController:animated:completion:のようなものを使いたいと思います。

UIViewController *rootController = (UIViewController *)self.window.rootViewController; 
UIViewController *notificationController = [rootController.storyboard instantiateViewControllerWithIdentifier:@"My Push Notification View"]; 

[rootController presentViewController:notificationController animated:YES completion:NULL]; 
+0

私はこのアプリケーションを開いたたびに起動されたdidFinishLauncingWithOptionのios 7でこれを実装しました。プッシュ通知が入った場合、および/またはアプリが閉鎖され、プッシュ通知が届いた場合にのみ、私は何を起動するように変更するのですか? –

4

それはボタン

-(void)gotoback 
{ 
    AppDelegate *delegate =(AppDelegate *)[UIApplication sharedApplication].delegate; 

    if(delegate.gotNotifcation) 
    { 
     delegate.gotNotifcation = NO; 
     MessageListController *feed = [[MessageListController alloc] init]; 
     [self.navigationController pushViewController:feed animated:NO]; 
    } 
    else 
    { 
     [self.navigationController popViewControllerAnimated:NO]; 
    } 
} 
+0

すぐに3つのコードを更新できます@Charan Giri –

関連する問題