0

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


            });
        }
    }];

任何帮助将不胜感激。

非常感谢,马科斯

4

3 回答 3

1

设置文本后试试这个。

[self.firstname setNeedsDisplay];
于 2013-03-20T17:48:59.857 回答
0

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

self.firstname.text = meUser.firstname;

根据您的描述,我猜这可能会发生:当您单击(点击)标签时,您正在强制主队列清除其待处理的任务,其中之一可能是上面的代码。所以它将值放入标签中,并将其显示给您。

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

于 2013-03-20T17:48:24.257 回答
0

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

于 2013-03-22T00:43:12.273 回答