关闭通知中心时更新标签
Update a label when closing Notification Center
我想我需要一些帮助。
在我的应用程序中,我确实有一个 UILabel
,其文本来自 "integer"。每当 View
加载时,它都会在 NSUserDefaults
中获取整数的实际存储值:
NSUserDefaults *defaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.sam.Widget"];
counter = [defaults integerForKey:@"MyNumberKey"];
numberLabel.text = [NSString stringWithFormat:@"%d", counter];
另外,我有一个 NC-Widget,它的运行方式与应用程序本身的运行方式相同。 "integer" 的值通过 App Groups 同步,所以当我更改小部件中的整数值时,它会将值存储在 NSUserDefaults
.
中
所以,我的问题是,第二个方向(从 Widget 到 App)仅在 App 本身关闭时才有效,甚至没有隐藏。
那么,当我关闭通知中心时,如何更新 App 中的 UILabel
,以便它识别我对小部件中的整数所做的更改?
如果你能帮助我,我将不胜感激。
-山姆
如果您打开通知中心,应用程序将进入后台。因此,您需要在事件返回前台时捕获该事件。您可以通过视图控制器中的观察者对系统通知执行此操作。如果您想观察自己的通知,您可以在 AppDelegate 中处理这些通知:
applicationWillEnterForeground:(UIApplication *)application
不要忘记在 dealloc 中退订。 (它还在 ARC 中被调用)
- (void) handleEnterForeground: (NSNotification*) sender{
NSUserDefaults *defaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.sam.Widget"];
counter = [defaults integerForKey:@"MyNumberKey"];
numberLabel.text = [NSString stringWithFormat:@"%d", counter];
}
- (void)viewDidLoad{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(handleEnterForeground:)
name: @"UIApplicationWillEnterForegroundNotification"
object: nil];
}
- (void)dealloc{
[[NSNotificationCenter defaultCenter]removeObserver:self forKeyPath:@"UIApplicationWillEnterForegroundNotification"];
}
我想我需要一些帮助。
在我的应用程序中,我确实有一个 UILabel
,其文本来自 "integer"。每当 View
加载时,它都会在 NSUserDefaults
中获取整数的实际存储值:
NSUserDefaults *defaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.sam.Widget"];
counter = [defaults integerForKey:@"MyNumberKey"];
numberLabel.text = [NSString stringWithFormat:@"%d", counter];
另外,我有一个 NC-Widget,它的运行方式与应用程序本身的运行方式相同。 "integer" 的值通过 App Groups 同步,所以当我更改小部件中的整数值时,它会将值存储在 NSUserDefaults
.
所以,我的问题是,第二个方向(从 Widget 到 App)仅在 App 本身关闭时才有效,甚至没有隐藏。
那么,当我关闭通知中心时,如何更新 App 中的 UILabel
,以便它识别我对小部件中的整数所做的更改?
如果你能帮助我,我将不胜感激。 -山姆
如果您打开通知中心,应用程序将进入后台。因此,您需要在事件返回前台时捕获该事件。您可以通过视图控制器中的观察者对系统通知执行此操作。如果您想观察自己的通知,您可以在 AppDelegate 中处理这些通知:
applicationWillEnterForeground:(UIApplication *)application
不要忘记在 dealloc 中退订。 (它还在 ARC 中被调用)
- (void) handleEnterForeground: (NSNotification*) sender{
NSUserDefaults *defaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.sam.Widget"];
counter = [defaults integerForKey:@"MyNumberKey"];
numberLabel.text = [NSString stringWithFormat:@"%d", counter];
}
- (void)viewDidLoad{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(handleEnterForeground:)
name: @"UIApplicationWillEnterForegroundNotification"
object: nil];
}
- (void)dealloc{
[[NSNotificationCenter defaultCenter]removeObserver:self forKeyPath:@"UIApplicationWillEnterForegroundNotification"];
}