UILabel内容未刷新

时间:2013-03-20 17:43:55

标签: ios objective-c

我正在调用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;


            });
        }
    }];

任何帮助将不胜感激。

非常感谢, 马科斯

3 个答案:

答案 0 :(得分:1)

设置文本后尝试此操作。

[self.firstname setNeedsDisplay];

答案 1 :(得分:0)

答案在于您的代码本身。当dispatch_async时,{}内的代码不会快速执行。相反,您的viewDidLoad将立即返回。有时之后,以下行将会出现:

self.firstname.text = meUser.firstname;

根据您的描述,这是我猜可能发生的事情:当您单击(点击)标签时,您强制主队列清除其待处理的任务,其中一个可能高于代码。因此,它将值放入标签中,并将其显示给您。

您需要确定何时需要刷新标签,然后只希望它保留更新的文本。

答案 2 :(得分:0)

我最终将UILabel组件切换到UITextfield并神秘地将其工作完美无缺。