Загрузка просмотров после UILocalNotification - PullRequest
0 голосов
/ 21 октября 2011

Я хотел бы отобразить вид на ощупь оповещения о локальном уведомлении, моя проблема приведена ниже

Это три вида v1, v2, v3, и я включил код на кнопке этих трех разных видов, код для которых приведен ниже и отличается от разных представлений

notificationObject_ViewOne = [[UILocalNotification alloc]init];
notificationObject_ViewOne.fireDate = [NSDate dateWithTimeIntervalSinceNow:20];
notificationObject_ViewOne.timeZone = [NSTimeZone defaultTimeZone];
notificationObject_ViewOne.alertBody = @"You are notified";
notificationObject_ViewOne.alertAction = @"View 1";
notificationObject_ViewOne.applicationIconBadgeNumber = [[UIApplication sharedApplication]applicationIconBadgeNumber]+1;

NSDictionary *infoDict = [NSDictionary dictionaryWithObjectsAndKeys:@"Object 1", @"Key 1", nil];
notificationObject_ViewOne.userInfo = infoDict;


[[UIApplication sharedApplication]scheduleLocalNotification:notificationObject_ViewOne];
[notificationObject_ViewOne release];

SecondViewController *sec = [[SecondViewController alloc]initWithNibName:@"SecondViewController" bundle:nil];

[self.navigationController pushViewController:sec animated:YES];

[sec release];

Код для запуска уведомления во втором представлении:

notificationObject_ViewTwo = [[UILocalNotification alloc]init];
notificationObject_ViewTwo.fireDate = [NSDate dateWithTimeIntervalSinceNow:35];
notificationObject_ViewTwo.timeZone = [NSTimeZone defaultTimeZone];
notificationObject_ViewTwo.alertBody = @"You are notified";
notificationObject_ViewTwo.alertAction = @"View 2";
notificationObject_ViewTwo.applicationIconBadgeNumber = [[UIApplication sharedApplication]applicationIconBadgeNumber]+1;

NSDictionary *infoDict = [NSDictionary dictionaryWithObjectsAndKeys:@"Object 2", @"Key 2", nil];
notificationObject_ViewTwo.userInfo = infoDict;

[[UIApplication sharedApplication]scheduleLocalNotification:notificationObject_ViewTwo];

[notificationObject_ViewTwo release];

ThirdViewController *ThirdObj = [[ThirdViewController alloc]initWithNibName:@"ThirdViewController" bundle:nil];

[self.navigationController pushViewController:ThirdObj animated:YES];

[ThirdObj release];

Теперь внутри делегата приложения я обрабатываю уведомление с кодом, приведенным ниже

UILocalNotification *localNotificationObject = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];

if (localNotificationObject) 
{

    firstObject = [[FirstViewController alloc]initWithNibName:@"FirstViewController" bundle:nil];

    NSLog(@"noti %@",[localNotificationObject.userInfo valueForKey:@"Key 1"]);

    // firstObject.title = @"FirstView";
    [self.window addSubview:firstObject.view];

}

else if(localNotificationObject)
{
    SecondViewController *secondObject = [[SecondViewController alloc]initWithNibName:@"SecondViewController" bundle:nil];

    NSLog(@"noti %@",[localNotificationObject.userInfo valueForKey:@"Key 2"]);

    [self.window addSubview:secondObject.view];

    //secondObject.title = @"Second View";
}

else if(localNotificationObject)
{
    ThirdViewController *thirdObject = [[ThirdViewController alloc]initWithNibName:@"ThirdViewController" bundle:nil];

    NSLog(@"noti %@",[localNotificationObject.userInfo valueForKey:@"Key 3"]);

    [self.window addSubview:thirdObject.view];

    // thirdObject.title = @"Third View";
}
else
{
    firstObject = [[FirstViewController alloc]initWithNibName:@"FirstViewController" bundle:nil];
    UINavigationController *navC = [[UINavigationController alloc]initWithRootViewController:firstObject];


    [self.window addSubview:navC.view]; 
}

Приведенный выше код написан в приложении, завершил метод запуска файла делегата приложения

Итак, что я хочу сделать, это когда окно оповещения для уведомления 1 приходит, v1 должен загрузиться, когда приходит оповещение для уведомления 2, v2 должен загрузиться.

но v1 отлично загружается, но когда дело доходит до v2 и v3, userInfo для них равен нулю и v1 загружается по умолчанию. Я сделал то же самое в методе делегата UIApplication для обработки локальных уведомлений, но результаты все те же.

Пожалуйста, дайте мне руководство или ссылки для того же.

Заранее спасибо

1 Ответ

0 голосов
/ 21 октября 2011

Вы никогда не проверяете значение своего ключа, вы просто проверяете, есть ли он там.Посмотрите на свое первое утверждение.Хорошо, что вы использовали Elses или загрузили бы их все.

...