2012-09-19 9 views
5

Ho preparato un'app Alarm Clock che utilizza UILocalnotification per programmare l'allarme. Ora dopo che l'allarme è stato impostato, voglio fare un interruttore in modo che possa accenderlo e spegnerlo usando UISwitch Non riesco a capire come posso farlo? Quello che sto pensando ora è che quando si spegne l'allarme, memorizzerò i valori DATE e TIME prima di annullare lo UILocalnotification in modo che quando l'utente riattiva l'allarme I ripianificarlo con i valori DATE e TIME memorizzati. È il modo giusto di fare o ci sono altri modi per farlo?Accendere e spegnere l'allarme ios

risposta

7

basta creare la tabella del database che contiene le colonne 'data', 'isCanceled' e univoco 'alarmId' (usa il resto come vuoi). in modo che quando l'utente vuole cancellare l'allarme provare questo,

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]; 

per utilizzare questo meglio si crea il tuo allarme,

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];