0

通知が発生したときにアプリがあります。アプリがバックグラウンドにあるときに通知バーが表示されます。そのバーをタップすると、通知セットのテーブルビューに移動します。バックグラウンドからアプリを終了すると通知を受け取りますが、通知バーをタップすると、テーブルビューのインデックスパスが取得されないため、アプリがクラッシュします。

アプリがバックグラウンドで終了してリロードすると、アプリは didfinishlaunching に入ります。

appDidFinishLaunching では、テーブルビューに移動するメソッドを呼び出しています

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.viewController = [[PPViewController alloc] initWithNibName:@"ViewController_iPhone" bundle:nil] ;

     UILocalNotification *notification = [launchOptions objectForKey:              UIApplicationLaunchOptionsLocalNotificationKey];

    if (notification)
        {
            int remedyID = [[notification.userInfo objectForKey:kRemindMeNotificationRemedyIDKey] intValue];
            NSDictionary *reminderDetails =[NSDictionary dictionaryWithObjectsAndKeys:notification.userInfo,@"kRemindMeNotificationDataKey",[NSNumber numberWithInt:remedyID],kRemindMeNotificationRemedyIDKey,nil];

            [_viewController goToReminder:reminderDetails showNotification:YES];

       }
     [application setStatusBarStyle:UIStatusBarStyleBlackTranslucent];
    self.viewController = [[PPViewController alloc] initWithNibName:@"PPViewController" bundle:nil];
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];
    return YES;

}

**This is the code which navigates into tableview in another viewcontroller**

- (void)goToReminder:(NSMutableDictionary *)reminderDictionary showNotification:(BOOL)shouldShowNotification

{
    NSIndexPath *selectedSymptIP = [NSIndexPath indexPathForRow:selectedSymptomIndex inSection:keyIndexNumber];

    [self tableView:symptomsTableView didSelectRowAtIndexPath:selectedSymptIP];

}
4

2 に答える 2

0

アプリを終了してアプリを再起動すると、viewControllerまだセットアップされていません。通知から起動する場合は、バックグラウンドから再開しているか、正常に起動しているかを確認する必要があります。

さまざまな状態からアプリを再開する方法については、プロトコル リファレンスを参照しapplicationWillEnterForegroundてください。参照: http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html#//apple_ref/doc/uid/TP40007072-CH4-SW3applicationDidBecomeActiveUIApplicationDelegate

于 2013-05-21T17:26:48.360 に答える