我正在调用json / rest服务并将返回的数据传递给屏幕上的UILabel。我的屏幕由一个静态分组表组成,其中包含许多带标题和细节的单元格。在使用返回的内容设置uilabel.text后,屏幕不会显示该值,但如果我单击UILabel,则会显示该值。似乎我错过了刷新屏幕的命令。在回调块中从json / rest服务接收数据后,从viewDiDLoad方法调用代码。
[MEUser retrieveLoggedUserDetails:^(MEUser *meUser, NSError *error) {
if (meUser) {
dispatch_async(dispatch_get_main_queue(), ^{
self.email.text = meUser.email;
self.firstName.text = meUser.firstName;
self.lastName.text = meUser.lastName;
self.phone.text = meUser.phone;
});
}
}];
任何帮助将不胜感激。
非常感谢, 马科斯
答案 0 :(得分:1)
设置文本后尝试此操作。
[self.firstname setNeedsDisplay];
答案 1 :(得分:0)
答案在于您的代码本身。当dispatch_async时,{}内的代码不会快速执行。相反,您的viewDidLoad将立即返回。有时之后,以下行将会出现:
self.firstname.text = meUser.firstname;
根据您的描述,这是我猜可能发生的事情:当您单击(点击)标签时,您强制主队列清除其待处理的任务,其中一个可能高于代码。因此,它将值放入标签中,并将其显示给您。
您需要确定何时需要刷新标签,然后只希望它保留更新的文本。
答案 2 :(得分:0)
我最终将UILabel组件切换到UITextfield并神秘地将其工作完美无缺。