在appdelegate中定义UIabel

时间:2013-04-04 18:02:51

标签: ios objective-c xcode

所以,在这个项目的最后阶段,我决定要通知。 问题是,我在我的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];
    }
}

我已尝试普遍添加UILabelself.labelone),但无论我尝试什么,它都会引发错误。任何帮助或提示将非常感谢!

2 个答案:

答案 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];