2012-02-11 5 views
0

私はいくつかのシナリオでUIBUtton、UILabelなどの3つのコントロールを表示して非表示にしようとしています。私は以下の2つの機能を使ってこれをやっています。iPhone:レスポンスのコントロールを隠す/表示する

- (void) hide 
{ 
    usernameField.hidden=YES; 
    passwordField.hidden=YES; 
    myLabel.hidden=YES;  
} 

- (void) show 
{ 
    usernameFieldField.hidden=NO; 
    passwordField.hidden=NO; 
    myLabel.hidden=NO; 
} 

しかし、私はいくつかのサーバ応答コードの下でこれらの関数を呼び出すとき、それは私が成功/失敗サーバresponse..ItsはそれをやっていないでconnectionDidFinishLoadingの下で表示するようにしようとしているです。つまり、これらの状況ではこれらのコントロールを表示したり非表示にしたりすることはできませんが、ボタンをクリックしたときにこれらの関数を呼び出すと、そのコントロールの表示/非表示コントロール...ボタンのクリックのようなイベントでのみ呼び出されますか?私がやろうとしているようなところから電話をかけることはできませんか?

お知らせください!

答えて

1

をごconnectionDidFinishLoadingに

[self performSelectorOnMainThread:@selector(show) 
        withObject:nil 
        waitUntilDone:wait]; 

理由は、再描画を取得するためにメインスレッドで呼び出されるUIアップデートです。

0

コントロールの非表示状態を変更しても、すぐに変更が画面に描画されることはありません。将来のある時点で描画する必要があるとフラグを付けます。

メインスレッドがビジー状態の場合、自分自身を描画する機会はありません。

NSURLConnectionコードがメインスレッドで実行されていますか?あなたは、バックグラウンドスレッドに移動します(ただし、注意し、隠されたプロパティがないバックグラウンドスレッドで、メインスレッドで実行する必要があります変更!グランドセントラル派遣を検索します。)必要があります

関連する問題