Ho trascorso metà della giornata leggendo tutte le domande e le risposte "Come cancellare una notifica locale". Dopo tutto, ho trovato la mia soluzione ma a quanto pare non funziona. Ho un Tableview con tutti i miei notifiche in programma ....Annulla notifica locale non funzionante
sul file H ho
@property (strong, nonatomic) UILocalNotification *theNotification;
e poi sul file M:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSArray *notificationArray = [[UIApplication sharedApplication] scheduledLocalNotifications];
theNotification = [notificationArray objectAtIndex:indexPath.row];
NSLog(@"Notification to cancel: %@", [theNotification description]);
// NSLOG Perfectly describes the notification to be cancelled. But then It will give me "unrecognized selector"
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Local Reminder"
message:@"Cancel local reminder ?"
delegate:self
cancelButtonTitle:@"No"
otherButtonTitles:@"Yes", nil];
[alertView show];
[alertView release];
[self.tableView deselectRowAtIndexPath:indexPath animated:YES];
}
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
if (buttonIndex == 0) {
NSLog(@"Cancel");
}else{
NSLog(@"Ok");
[[UIApplication sharedApplication] cancelLocalNotification:theNotification];
}
}
Se faccio clic su "Ok "Ottengo: 2012-02-04 03: 34: 48.806 Terzo test [8921: 207] - [__ NSCFType encodeWithCoder:]: selettore non riconosciuto inviato all'istanza 0x890ae90 Segnale ricevuto programma" SIGABRT ".
Se riesco a identificare completamente la notifica da cancellare, perché me lo dà?
Stavo cercando di trovare un modo in cui 1 - Non ho bisogno di chiudere il controller 2 - Visualizza la notifica che viene cancellata 3 - Non è necessario impostare una chiave specifica ogni volta. La tua risposta è totalmente valida, ho solo dovuto lavorare un po 'di più per un risultato visivo migliore. Grazie per la tua risposta però. Accetterò e voterò. – Farini
Si noti che questo funziona solo per le notifiche _scheduled_; non riesci a cancellare una notifica presentata tramite 'presentLocalNotificationNow:'. Mi ci è voluto solo un anno per capirlo! –
@Farini sentiti libero di modificare la mia risposta per renderla migliore :) – Shmidt