5

我准备了一个闹钟应用程序,UILocalnotification用于安排闹钟。现在设置闹钟后,我想做一个开关,以便我可以使用它打开和关闭它UISwitch。我只是想不出我该怎么做?什么我现在的想法是,当您关闭警报时,我将在取消之前存储 DATE 和 TIME 值,UILocalnotification以便当用户再次打开警报时,我会使用存储的 DATE 和 TIME 值重新安排它。这是正确的方法还是有其他方法可以做到这一点?

4

1 回答 1

7

只需创建具有“日期”、“isCanceled”字段和唯一 id“alarmId”列的数据库表(随意使用 rest)。所以当用户想要取消警报时,试试这个,

    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 回答