2015-07-11 1 views
1

Ciao, tout le monde. В моем приложении Swift есть UILocalNotification, запланированный в методе, который будет вызываться через некоторое время, когда загружается UIViewController, и он повторяется каждый час (используя repeatInterval = .CalendarUnitHour). Я храню этот экземпляр UILocalNotification в частной собственности в UIViewController, так что я могу отменить его позже. Когда пользователь нажимает на кнопку в UIViewController, метод действия будет инициировать отмену экземпляра уведомления, с помощью которого я использую этот код (код также используется в deinit в UIViewController:Почему я не могу отменить повторяющееся UILocalNotification?

if let notification = notificationProperty { 
    UIApplication.sharedApplication().cancelLocalNotification(notification) 
    notificationProperty = nil 
} 

Я использую а, если пусть заявление здесь, чтобы предотвратить случайное отменяя nilUILocalNotification. Но даже после того, как отменили уведомление, уведомление по-прежнему появляется каждый час.

Так почему же это не отменяя правильно? Спасибо!

ответ

2

уведомлен что у системы есть копия той, которую вы держите в качестве поля. Вы не можете отменить тот, который вы держите, поскольку он не является экземпляром уведомления, находящимся в системе.

Вы можете отменить все существующие уведомления на cancelAllLocalNotifications или найти тот, который хотите отменить, итерации по всем существующим экземплярам по объекту scheduledLocalNotifications.

+0

О, это сюрприз! Спасибо за совет! – Blip

+0

Но добавляет ли каждый повторный 'UILocalNotification' счет как отдельное уведомление? Или повторяющиеся 'UILocalNotifications' считаются группой, поэтому, когда вы ее отменяете, все опубликованные отменяются? – Blip