0

次のようなテーブルビューがあります。対応するスイッチをオンにして、各セルにリマインダーを設定しました

-(IBAction)switchingbtn:(id)sender
{
    UISwitch *onoff = (UISwitch *) sender;
    UILocalNotification *localNotif = [[UILocalNotification alloc] init];
    if(onoff.on)
    {
        NSLog(@"Shedule notification");


    int tagValue=[sender tag];

    NSMutableDictionary *dict = (NSMutableDictionary *)[alarmsArray objectAtIndex:tagValue];


    NSDate *firedate = [dict objectForKey:@"date"];
    NSLog(@"fire date is %@", firedate);
    localNotif.fireDate = firedate;

    localNotif.alertBody = @"Start Exercise";
    localNotif.applicationIconBadgeNumber = 0;

    // localNotif.timeZone =[NSTimeZone timeZoneForSecondsFromGMT:0];
    localNotif.timeZone = [NSTimeZone systemTimeZone];
    localNotif.repeatInterval = kCFCalendarUnitDay;


   //  [[UIApplication sharedApplication] scheduleLocalNotification:localNotif]; //**Not working**
    [localNotif release];

}

いいえ、前の 3 回目の通知の前の 1 回目の通知をキャンセルする必要があります。3 回目の通知をキャンセルします。

else
    {
// Cancel a notification not works
      //  [[UIApplication sharedApplication] cancelLocalNotification:localNotif];

        [[UIApplication sharedApplication] cancelAllLocalNotifications];
    NSLog(@"cancel notification");
}
4

2 に答える 2

1

これまでのところ、単一の通知をキャンセルする最善の方法は、userInfo ディクショナリを持つ通知を作成することです。このディクショナリでは、id キーの通知 ID 値を追加できます。通知IDを追跡し(plist、SQLデータベースなどに保存)、通知を削除する必要がある場合は、UIApplicationインスタンスにスケジュールされた通知を要求し、一致が見つかったらIDでフィルタリングするだけですその通知のキャンセル メソッドを送信するだけです。

于 2012-05-02T09:49:39.780 に答える