5

目覚まし時計アプリを用意しました。目覚まし時計を設定したら、目覚まし時計を使っUILocalnotificationてオンとオフを切り替えたいのですが、UISwitchどうすればいいのかわかりません。今のところ、アラームをオフにしたときは、キャンセルする前にDATEとTIMEの値を保存してUILocalnotification、ユーザーが再びアラームをオンにしたときに、保存したDATEとTIMEの値でスケジュールを変更することを考えています。それは正しい方法ですか、それとも他の方法がありますか?

4

1 に答える 1

7

'date'、'isCanceled'フィールドと一意のID'alarmId'列を持つデータベーステーブルを作成するだけです(残りは必要に応じて使用してください)。したがって、ユーザーがアラームをキャンセルしたい場合は、これを試してください。

    NSString *alarmId = @"some_id_to_cancel"; 
    UILocalNotification *notificationToCancel=nil;            
    for(UILocalNotification *aNotif in [[UIApplication sharedApplication] scheduledLocalNotifications]) {
        if([aNotif.userInfo objectForKey:@"ID"] isEqualToString:alarmId]) { 
            notificationToCancel = aNotif; 
            break; 
        } 
    } 
    [[UIApplication sharedApplication] cancelLocalNotification:notificationToCancel];

これをよりよく使用するには、次の方法でアラームを作成します。

UILocalNotification *localNotif = [[UILocalNotification alloc] init]; 

 if (localNotif == nil)  
  return;

 localNotif.fireDate = itemDate; 
 localNotif.timeZone = [NSTimeZone defaultTimeZone];
 localNotif.alertAction = NSLocalizedString(@"View Details", nil); 
 localNotif.alertBody = title;
 localNotif.soundName = UILocalNotificationDefaultSoundName; 

 NSDictionary *infoDict = [NSDictionary dictionaryWithObject:stringID forKey:@"ID"]; 
 localNotif.userInfo = infoDict; 

 [[UIApplication sharedApplication] scheduleLocalNotification:localNotif]; 
 [localNotif release];
于 2012-09-19T04:16:47.477 に答える