[英]UILabel text doesn't update after receiving notification
当我使用此设置标签时
self.versionLbl.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"version"];
在viewDidLoad
方法中,它在视图加载时起作用,但我也想在收到通知时设置标签。
- (void)receiveNotification:(NSNotification *) notification
{
if ([[notification name] isEqualToString:@"versionNotification"]){
NSLog (@"Successfully received the notification!");
self.versionLbl.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"version"];
}
}
字符串"Successfully received the notification!"
得到打印出来,但标签不会更新/设置字符串,除非我再次重新加载视图并调用viewDidLoad
方法。
编辑
当我把self.versionLbl.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"version"];
我发现它与通知无关self.versionLbl.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"version"];
在另一个函数中没有设置以及...它只在我把它放在viewDidLoad方法时才被设置
确保您的标签不是nil
,并且您正在主线程中调用UIKit方法。 你可以试试这个:
dispatch_async(dispatch_get_main_queue(), ^{
self.versionLbl.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"version"];
});
首先确保对象存储在[[NSUserDefaults standardUserDefaults] objectForKey:@"version"];
实际上是一个NSString
对象。
如果没有,你有几个选择:
self.versionLbl.text = [[NSUserDefaults standardUserDefaults] stringForKey:@"version"];
要么
id versionObject = [[NSUserDefaults standardUserDefaults] objectForKey:@"version"];
self.versionLbl.text = [NSString stringWithFormat:@"%@", versionObject];
要么
id versionObject = [[NSUserDefaults standardUserDefaults] objectForKey:@"version"];
self.versionLbl.text = [versionObject stringValue];
在您的UILabel上查看IBOutlet。 您应该使用.xib文件上带有标签的Property声明IBOutlet UILabel。
如果在视图加载后加载,请尝试[myLabel setNeedsDisplay];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.