0

受信したローカル通知の処理で多くの問題が発生しています。私のアプリはストーリーボードを使用しており、rootviewcontroller として tabbarcontroller を持っています。現在、次の方法で「didReceiveLocalNotification」からモーダルビューを起動しています。

MedicationReminderViewController *vc = [[MedicationReminderViewController alloc] initWithNibName:@"MedicationReminderViewController" bundle:nil];
    vc.notificationInfo = [[NSDictionary alloc] initWithDictionary:notification.userInfo];
    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:vc];
    navController.navigationBar.barStyle = UIBarStyleBlackOpaque;
    navController.title = @"title";

    UITabBarController *tc = (UITabBarController *)self.window.rootViewController;
    UINavigationController *nc = (UINavigationController *)tc.selectedViewController;    
    [[nc visibleViewController] presentModalViewController:navController animated:YES];

これは機能しますが、すべての場合ではありません。その時点で表示できる他のものよりも、新しいウィンドウにモーダル ビューを表示したいと思います。ユーザーが着信通知を処理すると、モーダル ビューは閉じられ、通知が着信する前にアクティブだった基になるビューが再び表示されます。どうすればこれを達成できますか?

4

1 に答える 1

0

オブジェクトのAppDelegateでそれを行いwindowます。私はあなたがそこでそれをすることができると信じています。私の頭のてっぺんから、私はそれがwindow.rootViewControllerだと信じています。でもわからない。

方法:UILocalNotificationを受信すると、AppDelegateで受信できます。通知が「到着」したら、presentModalViewControlleronを使用しself.window.rootViewControllerます。

ドキュメント
からの更新

システムが通知を配信するときにアプリケーションが最優先で表示されている場合、アラートは表示されず、アイコンにはバッジが付けられておらず、音も再生されません。ただし、application:didReceiveLocalNotification:は、アプリケーションデリゲートが実装した場合に呼び出されます。UILocalNotificationインスタンスはこのメソッドに渡され、デリゲートはそのプロパティを確認したり、userInfoディクショナリのカスタムデータにアクセスしたりできます。

メソッドを使用しapplication:didReceiveLocalNotification:ます。それがあなたの質問に答えたことを願っています。

于 2012-05-03T11:57:33.823 に答える