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

結局、UILabelコンポーネントをUITextfieldに切り替えて、不思議なことにそれが完璧に機能するようになりました。

于 2013-03-22T00:43:12.273 に答える
0

答えはコード自体にあります。dispatch_async すると、{ } 内のコードがすぐに実行されません。代わりに、viewDidLoad はすぐに戻ります。その後、次の行がヒットすることがあります。

self.firstname.text = meUser.firstname;

あなたが説明したことから、これは私が推測していることです: ラベルをクリック (タップ) すると、メイン キューが保留中のタスクを強制的にクリアし、その 1 つがコードの上にある可能性があります。したがって、値をラベルに入れ、表示します。

ラベルをいつ更新するかを正確に決定し、更新されたテキストのみを保持することを期待する必要があります。

于 2013-03-20T17:48:24.257 に答える