所以,在这个项目的最后阶段,我决定要通知。
问题是,我在我的MainViewController中设置了UILabel
,它从输入中获取了它的值,我需要在我的通知设置中使用这些值,当应用程序变为背景时会调用它们。 (代码位于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
),但无论我尝试什么,它都会引发错误。任何帮助或提示将非常感谢!
答案 0 :(得分:0)
在AppDelegate
内,创建一个名为UILabel
的{{1}}弱属性。
然后在timeIntervalLabel
的{{1}}内进行:
MainViewController
最后,在viewDidLoad
内,您可以使用AppDelegate *d = [UIApplication sharedApplication].delegate;
d.timeIntervalLabel = self.labelone
答案 1 :(得分: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];