0

カスタム通知付きのアプリを作成しましたが、何をしても削除できません。

[[UIApplication sharedApplication] cancelLocalNotification:[idkey objectAtIndex:indexPath.row]];

これが私が削除に使用するコードです。私がすべてを使用すればそれは動作します。このidkey場合、は正しい値であり、文字列内の数値@"3"です。

これは保存機能の一部です。

-(void) addNewNotificationWithKey:(NSString*)key {

    NSLog(@"%@",key);

    Class cls = NSClassFromString(@"UILocalNotification");
    if (cls != nil) {

        UILocalNotification *notif = [[cls alloc] init];
        notif.fireDate = [tempFormatter dateFromString:datuminura];
        notif.timeZone = [NSTimeZone defaultTimeZone];

        notif.alertBody = description1;
        notif.alertAction = @"Open";
        notif.soundName = UILocalNotificationDefaultSoundName;

正しいですか?

4

1 に答える 1

1

削除する通知を確認し、次のコードを使用してキャンセルします。

UIApplication *app = [UIApplication sharedApplication];
NSArray *eventArray = [app scheduledLocalNotifications];
for (int i=0; i<[eventArray count]; i++)
{
    UILocalNotification* oneEvent = [eventArray objectAtIndex:i];
    NSDictionary *userInfoCurrent = oneEvent.userInfo;
    NSString *uid=[NSString stringWithFormat:@"%@",[userInfoCurrent valueForKey:@"uid"]];
    if ([uid isEqualToString:uidtodelete])
    {
        //Cancelling local notification
        [app cancelLocalNotification:oneEvent];
        break;
    }
}

[編集]

ローカル通知に次の行を追加して、[uid isEqualToString:uidtodelete]条件を機能させます。

NSDictionary *infoDict = [NSDictionary dictionaryWithObject:[NSString stringWithFormat:@"%d",[idkey objectAtIndex:indexPath.row]] forKey:@"uid"]; 
notif.userInfo = infoDict; 
于 2012-10-19T16:02:20.853 に答える