He pasado la mitad de mi día leyendo todas las preguntas y respuestas sobre "Cómo cancelar una notificación local". Después de todo, se me ocurrió mi propia solución, pero aparentemente no funciona. Tengo un tableview con todas mis notificaciones programadas ....Cancelar notificación local no funciona
en el archivo H tengo
@property (strong, nonatomic) UILocalNotification *theNotification;
y luego en el archivo 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];
}
}
Si hago clic en "Ok "Obtengo: 2012-02-04 03: 34: 48.806 Tercera prueba [8921: 207] - [__ NSCFType encodeWithCoder:]: selector no reconocido enviado a la instancia 0x890ae90 Programa recibido señal" SIGABRT ".
Si puedo identificar por completo la notificación que se cancelará ¿por qué me da eso?
Estaba tratando de encontrar una manera en la que 1 - No es necesario descartar el controlador 2 - Visualice la notificación que se elimina 3 - No tiene que configurar una clave específica cada vez. Su respuesta es totalmente válida, solo tuve que trabajar un poco más para obtener un mejor resultado visual. Gracias por tu respuesta. Aceptaré y votaré. – Farini
Tenga en cuenta que esto funciona para las notificaciones _scheduled_ solamente; parece que no puede cancelar una notificación presentada a través de 'presentLocalNotificationNow:'. ¡Solo me llevó un año descubrirlo! –
@Farini no dude en editar mi respuesta para que sea mejor :) – Shmidt