Я провел половину своего дня, читая все вопросы и ответы «Как отменить локальное уведомление».
В конце концов, я придумал собственное решение, но, видимо, оно не работает.
У меня есть таблица со всеми запланированными уведомлениями ....
в файле H у меня есть
@property (strong, nonatomic) UILocalNotification *theNotification;
и затем в файле 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];
}
}
Если я нажму "ОК", я получу:
2012-02-04 03: 34: 48.806 Третий тест [8921: 207] - [__NSCFType encodeWithCoder:]: нераспознанный селектор, отправленный экземпляру 0x890ae90
Программа получила сигнал "SIGABRT".
Если я могу полностью идентифицировать уведомление, подлежащее отмене, почему оно мне это дает?