0

所以,在这个项目的最后阶段,我决定我想要通知。问题是,我UILabel在我的 MainViewController 中有一个设置,它从那里的输入中获取它的值,我需要将这些值用于我的通知设置中的时间间隔,当应用程序进入后台时会调用它。(代码位于Appdelegate.m

- (void)applicationDidEnterBackground:(UIApplication *)application
{
NSDate *alertTime = [[NSDate date]
                     dateByAddingTimeInterval:[self.labelone.text intValue] * 60];
UIApplication* app = [UIApplication sharedApplication];
UILocalNotification* notifyAlarm = [[UILocalNotification alloc]
                                    init];
if (notifyAlarm)
{
    notifyAlarm.fireDate = alertTime;
    notifyAlarm.timeZone = [NSTimeZone defaultTimeZone];
    notifyAlarm.repeatInterval = 0;
    notifyAlarm.soundName = UILocalNotificationDefaultSoundName;
    notifyAlarm.alertBody = @"Staff meeting in 30 minutes";
    [app scheduleLocalNotification:notifyAlarm];
    }
}

我已经尝试普遍添加UILabel( self.labelone) ,但无论我尝试什么,它都会引发错误。任何帮助或提示将不胜感激!

4

2 回答 2

0

在你的内部AppDelegate,创建一个UILabel名为timeIntervalLabel.

然后 inside简单MainViewControllerviewDidLoad做:

AppDelegate *d = [UIApplication sharedApplication].delegate;
d.timeIntervalLabel = self.labelone

最后,在你的内部applicationDidEnterBackground你可以使用self.timeIntervalLabel

于 2013-04-04T18:13:36.727 回答
0

您可以在 MainViewController 的 viewDidLoad 方法中通过 NSNotificationCenter 注册通知来监听 MainViewController 中的后台通知:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willEnterBackground:) name:UIApplicationDidEnterBackgroundNotification object:nil];

当应用程序进入后台时,您的 MainViewController 将调用选择器 willEnterBackground:,因此您需要进行设置:

- (void)willEnterBackground:(NSNotification *)notification {
    ...you can now access self.labelone
}

在 MainViewController viewDidUnload 方法中,移除该通知的观察者:

[[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidEnterBackgroundNotification object:nil];
于 2013-04-04T18:14:37.450 回答