UILocalNotification не стреляет - PullRequest
       19

UILocalNotification не стреляет

3 голосов
/ 09 августа 2011

Я очень новичок в Cocoa Touch и Objective-C, но я получил довольно большие очки и экспериментирую с UIKit. У меня есть действие, связанное с кнопкой, которая меняет метку и запускает UILocalNotification, и это метод действия:

- (IBAction)changeLabel:(id)sender {
    self.LabelOne.text = @"WHAT UPPP!";
    self.NotifyOne.alertBody = @"Testtttttt";
    self.NotifyOne.alertAction = @"Got It.";
    self.NotifyOne.fireDate = nil;
}

Нет ошибок или предупреждений, но это просто не выстрел. Что-то не так с моим методом действия?

UPDATE
Вот инициализация делегата приложения, которая содержит UILocalNotification:

@interface LearnAppDelegate : NSObject <UIApplicationDelegate> {
    UIButton *_ModifyLabelButton;
    UILabel *_LabelOne;
    UILocalNotification *_NotifyOne;
}

@property (nonatomic, retain) IBOutlet UILocalNotification *NotifyOne;

Ответы [ 3 ]

6 голосов
/ 09 августа 2011

Если вы хотите, чтобы он отображался без расписания (например, когда вы нажимаете кнопку), либо используйте UIAlertView, либо добавьте [application presentLocalNotificationNow:self.NotifyOne]; к своему коду.

ОБНОВЛЕНИЕ

Удалите IBOutlet и сделайте обе декларации UILocalNotification с одним и тем же именем.Например:

@interface LearnAppDelegate : NSObject <UIApplicationDelegate> {
    UIButton *_ModifyLabelButton;
    UILabel *_LabelOne;
    UILocalNotification *NotifyOne;
}

@property (nonatomic, retain) UILocalNotification *NotifyOne;

Не забудьте synthesize в файле вашей реализации (.m).

Также попробуйте это вместо:

- (IBAction)changeLabel:(id)sender {
    self.LabelOne.text = @"WHAT UPPP!";
    NotifyOne = [[UILocalNotification alloc] init];
    if (NotifyOne) {
        NotifyOne.alertBody = @"Testtttttt";
        NotifyOne.alertAction = NSLocalizedString(@"Got It.", nil);
        NotifyOne.fireDate = nil;
        NotifyOne.soundName = nil;
        NotifyOne.applicationIconBadgeNumber = 0;
        [application presentLocalNotificationNow:NotifyOne];
        [NotifyOne release];
        NotifyOne = nil;
    }
}
3 голосов
/ 09 августа 2011

Вы когда-нибудь планировали будильник? Вот код, который я использую для срабатывания будильника.

UILocalNotification *alarm = [[UILocalNotification alloc] init];
    if (alarm) {
        alarm.fireDate = [NSDate date];
        alarm.timeZone = [NSTimeZone defaultTimeZone];
        alarm.repeatInterval = 0;
        alarm.soundName = @"alarmsound.caf";
        alarm.alertBody = @"Test message...";       
        [[UIApplication sharedApplication] scheduleLocalNotification:alarm];
        [alarm release];
    }
1 голос
/ 09 августа 2011

A UILocalNotification не сработает, если вы не предоставите ему fireDate и не запланируете его с экземпляром приложения. Если вы пытаетесь немедленно представить какое-то предупреждение, возможно, вам следует попробовать UIAlertView.

...